2011-02-04 80 views
0

我正在尝试使用jQuery更改div的宽度。它应该与另一个div内的值成比例地变化。JavaScript只返回NaN在Google Chrome中,在Firefox中正常工作

我使用下面的脚本:

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。 任何想法可能导致问题的原因是什么?

如意见提出以下,我试图找出各变量的值。 在铬的输出是:

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 
+0

检查,看看thisWidthStr`的'价值它` thisWidth`。可能会帮助找到原因 – 2011-02-04 05:04:41

+0

一般提示:您可以使用Chromes控制台并逐行尝试您的代码并查看Chrome在窒息的位置。 – 2011-02-04 05:05:21

+0

使用`Console`或`alert`检查每个变量的值.. – 2011-02-04 05:10:27

回答

0

我在想MAXCOUNT =零。原因是任何除数为零的数字都会导致NaN,因为它在数学上是不可能的。

0

试图改变这一点:

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

到:

var thisCount = parseFloat($this.find('.comment-bar').text().toString()); 
0

试试这个:刚assigining之前

$(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 }); 
     }  
}); 
相关问题