2012-06-21 25 views
13

爲什麼clientWidth/Height在IE,Chrome和Safari上返回0?但在Firefox和Opera上運行良好。 我使用這個代碼:clientWidth和clientHeight返回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); 

}); 

有什麼想法嗎?謝謝。

我試圖用clientwidth其作品罰款的Firefox,Chrome和Opera window.load但他沒有別人

+0

如果您使用的是jquery,請使用innerWidth()屬性,而不是客戶端寬度 –

+0

@Ajaybeniwal〜在這個特定的示例中,不,使用jQuery並不會更好。引用本地屬性的速度通常比調用jQuery函數要快,而且OP本來就有一個本地JS DOM對象的句柄;爲什麼要經歷把它包裝在jQuery對象中的麻煩,並招致額外的開銷? –

+0

我最近回答了類似的問題;你可能想[也閱讀](http://stackoverflow.com/a/11116604/304588)。看起來像是同樣的問題。 –

回答

-5

我認爲這將是更好,如果你使用jQuery獲取的高度和寬度,因爲它工作正常在所有瀏覽器,讓您的代碼將是這樣的: -

$(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); 

});