clientWidth и clientHeight возвращают 0 [дубликаты]

На этот вопрос уже есть ответ:

jquery .ready и высота элемента 1 ответ

Почему clientWidth / Height возвращает 0 в IE, Chrome и Safari? но на Firefox и Opera работает нормально. Я использовал этот код:

$(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 с клиентской пропускной способностью, он прекрасно работает для Firefox, Chrome и Opera, но другие не

 Richard Neil Ilagan21 июн. 2012 г., 09:02
Я недавно ответил на похожий вопрос; ты можешь хотеть чтобы это тоже прочитать. Похоже, та же проблема.
 Ajay Beniwal21 июн. 2012 г., 09:02
Если вы используете jquery, используйте свойство innerWidth (), а не ширину клиента
 Richard Neil Ilagan20 июл. 2013 г., 03:57
@ Ajaybeniwal ~ в данном конкретном примере нет, лучше не использовать jQuery. Как правило, ссылаться на нативные свойства быстрее, чем вызывать функции jQuery, и в любом случае OP имеет дескриптор нативного объекта JS DOM; зачем переживать оборачивание этого в объект jQuery и нести дополнительные издержки?

Ответы на вопрос(3)


http: //forums.asp.net/post/1515655.asp
Не уверен, но я решил эту проблему.

что было бы лучше, если бы вы использовали 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); 

});

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

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

Ваш ответ на вопрос