2012-06-21 2 views
13

Почему clientWidth/Height возвращают 0 на IE, Chrome и Safari? но в 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); 

}); 

любая идея? Благодарю.

Я попытался с window.load с clientwidth его отлично работает для Firefox, Chrome и Opera, но он другие не

+0

Если вы используете jquery pls, используйте свойство 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); 

}); 
-3

Если вы хотите, чтобы получить размеры, включая маржу и границы попробовать с помощью функций Jquery outerWidth и outerHeight. Они должны позаботиться о различиях между кроссбраузерами. http://api.jquery.com/outerwidth/

Если вы хотите получить только размеры содержимого элемента (без полей, границ, прокладок), используйте width и height. http://api.jquery.com/width/

Смежные вопросы