2012-06-21 15 views
13

Tại sao clientWidth/Height trả về 0 trên IE, Chrome và Safari? nhưng trên Firefox và Opera hoạt động tốt. Tôi đã sử dụng mã này:clientWidth và clientHeight trả về 0

$(document).ready(function() { 

    var imgs = document.getElementsByTagName('img'); 
    var imgLength = imgs.length; 

    for (var i = 0; i <= imgLength - 1; i++) { 

     var imgWidth = imgs[i].clientWidth; 
     var imgHeight = imgs[i].clientHeight; 

     $('img').eq(i).attr({ 
      width: imgWidth, 
      height: imgHeight 
     }); 

     console.log(imgWidth); 
    } 

    console.log(imgLength); 

}); 

bất kỳ ý tưởng nào? Cảm ơn.

Tôi đã thử với window.load với clientwidth công trình của nó tốt cho Firefox, Chrome và Opera nhưng ông khác không

+0

Nếu bạn đang sử dụng jquery pls sử dụng innerWidth() tài sản thay vì sau đó chiều rộng khách hàng –

+0

@Ajaybeniwal ~ trong ví dụ cụ thể này, không, nó không tốt hơn để sử dụng jQuery. Nói chung các thuộc tính gốc thường nhanh hơn để gọi các hàm jQuery, và OP có một xử lý trên một đối tượng JS DOM gốc; tại sao đi qua những rắc rối của gói đó trong một đối tượng jQuery, và phát sinh thêm chi phí? –

+0

Gần đây tôi đã trả lời về một câu hỏi tương tự; bạn cũng có thể muốn [đọc nó] (http://stackoverflow.com/a/11116604/304588). Có vẻ như cùng một vấn đề. –

Trả lời

-5

Tôi nghĩ rằng nó sẽ tốt hơn nếu bạn sử dụng JQuery để có được chiều cao và chiều rộng, vì nó hoạt động tốt trong tất cả các trình duyệt, do đó, mã của bạn sẽ là một cái gì đó như thế này: -

$(document).ready(function() { 


    var imgs = $('img'); 
    var imgLength = imgs.length; 

    for(var i=0; i<= imgLength-1;i++){ 

     var imgWidth = imgs[i].width(); 
     var imgHeight = imgs[i].height(); 

     $('img').eq(i).attr({width:imgWidth, height: imgHeight}); 

     console.log(imgWidth); 
    } 

    console.log(imgLength); 

}); 
-3

Nếu bạn muốn để có được kích thước bao gồm cả lợi nhuận và biên giới thử sử dụng JQuery chức năng outerWidthouterHeight. Họ nên chăm sóc về sự khác biệt giữa các trình duyệt. http://api.jquery.com/outerwidth/

Nếu bạn muốn chỉ nhận kích thước của nội dung phần tử (không có lề, đường viền, phần đệm), hãy sử dụng widthheight. http://api.jquery.com/width/