JavaScript возвращает NaN только в Google Chrome, отлично работает в Firefox - PullRequest
0 голосов
/ 04 февраля 2011

Я пытаюсь изменить ширину div, используя jQuery.Оно должно изменяться пропорционально значению внутри другого div.

Я использую следующий скрипт:

var maxWidth, maxCount;

$('.view-most-commented ul li').each(function(i) {

var $this = $(this);

var thisCount = parseFloat($this.find('.comment-bar').html());

if ( i == 0 ) {

maxWidth = $this.width();

maxCount = thisCount;

}

var thisWidthStr = (thisCount / maxCount) * maxWidth;

var thisWidth=parseFloat(thisWidthStr);

$this.find('.views-field-comment-count').attr('style','max-width :'+thisWidth+'px');

});

Это отлично работает в FF, но в Chrome значение thisWidth равноNaN.Любая идея, что может быть причиной проблемы?

Как предложено в комментариях ниже, я попытался выяснить значение каждой переменной.Выход в Chrome:

thisCount:NaN
maxWidth:0
maxCount:NaN
thisWidthStr:NaN
thisWidth:NaN
thisCount:NaN
thisWidthStr:NaN
thisWidth:NaN
thisCount:NaN
thisWidthStr:NaN
thisWidth:NaN
thisCount:6
thisWidthStr:NaN
thisWidth:NaN
thisCount:5
thisWidthStr:NaN
thisWidth:NaN
thisCount:5
thisWidthStr:NaN
thisWidth:NaN
thisCount:5
thisWidthStr:NaN
thisWidth:NaN
thisCount:4
thisWidthStr:NaN
thisWidth:NaN

, а выход в FF:

thisCount:6
maxWidth:955
maxCount:6
thisWidthStr:955
thisWidth:955
thisCount:5
thisWidthStr:795.8333333333334
thisWidth:795.8333333333334
thisCount:5
thisWidthStr:795.8333333333334
thisWidth:795.8333333333334
thisCount:5
thisWidthStr:795.8333333333334
thisWidth:795.8333333333334
thisCount:4
thisWidthStr:636.6666666666666
thisWidth:636.6666666666666

Ответы [ 3 ]

0 голосов
/ 04 февраля 2011

Попробуйте изменить это:

var thisCount = parseFloat($this.find('.comment-bar').html());

на:

var thisCount = parseFloat($this.find('.comment-bar').text().toString());
0 голосов
/ 30 мая 2012

Попробуйте это:

$(function () {
        var total = 0;
        var all = $('.most-commented li');
        for (var i = 0; i < all.length; i++) {
            total += parseFloat($(all[i]).find('.comment-count').text().toString());
        }
        for (var i = 0; i < all.length; i++) {
            var count = parseFloat($(all[i]).find('.comment-count').text().toString());
            var per = count / total;
            $(all[i]).find('.comment-bar').css({ width: per * 400 });
        }       
});
0 голосов
/ 04 февраля 2011

я думаю maxcount = ноль. причина в том, что любое число, деленное на ноль, приведет к NaN, поскольку это математически невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...