2011-10-19 12 views
3

私はこの小さなことを機能させることはできません。何が問題なのか分かりませんが、配列の要素が定義できない場合、警告は常にNaNを返します。 jQueryセレクタに警告しようとしましたが、彼らは完全に動作しています。どうしたの? 「高さ」または「幅」属性は、画像のいずれかに設定されていない、または、その後NaNの結果になる可能性があり、それを分割しようとすると、数でない場合配列要素を定義できません

 var sldr        = $("#slider img"), 
      count       = sldr.length-1, 
      containerHeight   = $("#slider").css('height'), 
      images       = new Array(), 
      imgHeights     = new Array(), 
      imgWidths      = new Array(), 
      imgSlices      = new Array(), 
      choosenSlice    = '', 
      slicer       = ''; 


     var i=0; 
     for (i=0;i<=count;i++){ 
      images[i]    = $("#slider img:eq("+i+")"); 
      imgHeights[i]  = $("#slider img:eq("+i+")").attr('height'); 
      imgWidths[i]  = $("#slider img:eq("+i+")").attr('width'); 
      imgSlices[i]  = (Math.round(imgHeights[i]/containerHeight))-1; 
      alert(imgSlices[i]); 
     } 

答えて

3

はのparseIntを使用して数にそれらの値を変換してみてください。

mgHeights[i]  = parseInt($("#slider img:eq("+i+")").attr('height')); 
imgWidths[i]  = parseInt($("#slider img:eq("+i+")").attr('width')); 
+0

おかげで、それが働きました。しかし、なぜ私は数字以外を保存することができないのですか? 'code'images [i] = $("#slider img:eq( "+ i +") ");' code'これは例えばオブジェクトになります...そして、それらはタグで設定されます。理解できません... – wintercounter

+0

数字以外のものを保存することはできますが、数値計算を行うとNaNになります。高さと幅のようなタグの属性は最終的に文字列です。数字の文字列表現でも構いませんが、それでも文字列型です。何が起こっているかのように聞こえるのは、幅を「400」に設定しても、ブラウザは「400px」と解釈する可能性があるということです。余分な非数字の文字は、おそらくそれが解析されずに数字として扱われるのを妨げているでしょう。 – Zach

+0

明確にするために、実際の問題は文字列の分割(次の行で)です。これは、分割で使用される値の文字列の代わりに数値を格納することで解決します。一般に、配列に必要なものを格納することができます。 – Zach

関連する問題