Вопрос по html, jquery, javascript – clientWidth и clientHeight возвращают 0 [дубликат]

14

This question already has an answer here:

jquery .ready and height of element 1 answer

Почему 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, но другие не

@Ajaybeniwal ~ в этом конкретном примере нет, лучше не использовать jQuery. Как правило, быстрее ссылаться на собственные свойства, чем вызывать функции jQuery, и OP в любом случае имеет дескриптор собственного объекта JS DOM; зачем проходить через обертывание этого объекта jQuery и нести дополнительные издержки? Richard Neil Ilagan
Я недавно ответил на аналогичный вопрос; ты можешь хотетьto read that as well, Похоже, та же проблема. Richard Neil Ilagan
Если вы используете jquery, пожалуйста, используйте свойство innerWidth (), а не ширину клиента Ajay Beniwal

Ваш Ответ

3   ответа
-1

Попробуйте сменить doctype.
http://forums.asp.net/post/1515655.aspx
Я не уверен, но я решил эту проблему так.

-3

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

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

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

});

Похожие вопросы