2011-02-04 7 views
0

jQueryを使用してdivの幅を変更しようとしています。それは他のdiv内の値に比例して変化するはずです。JavaScriptはGoogle ChromeでのみNaNを返しますが、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です。 何が原因で問題が発生する可能性がありますか?

以下のコメントで示唆されているように、私は各変数の値を見つけようとしました。 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 
+0

チェック' thisWidth'。原因を見つけるのに役立つかもしれない –

+0

一般的なヒント:Chromesコンソールを使用して、コードを1行ずつ試して、Chromeがどこで窒息しているかを確認することができます。 –

+0

'Console'または' alert'を使って各変数の値を調べます。 –

答えて

0

私はMAXCOUNT =ゼロを考えています。その理由は、数値を0で割ったものがNaNになります。なぜなら、数学的に不可能だからです。

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

:これを変更する

+0

maxWidthは0ですが、thisCountと他のすべての変数はNaNです。質問に追加したconsole.log出力を確認してください。 – bcosynot

0

てみ

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

は役に立ちません。問題は解決しません。 – bcosynot

0

この方法を試してください。ただ、それがassigining前thisWidthStr` `の値を参照するには

$(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 }); 
     }  
}); 
関連する問題