2011-02-04 81 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 }); 
     }  
}); 
相關問題