2011-10-19 52 views
3

我無法使這個小東西工作。不知道有什麼問題,但我的數組元素無法定義,警告總是讓我回到NaN。試圖提醒jQuery選擇器,他們正在完美工作。有什麼問題?無法定義數組元素

 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

如果「高度」或「寬度」屬性未設置在圖像中的一個,或者是不是一個號碼,然後試圖用它來劃分可能導致爲NaN結果。

嘗試將這些值來使用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'這將是一個對象,例如...並且它們被設置在標記中...... can不明白... – wintercounter

+0

你可以存儲數字以外的東西,但是和他們做數學會導致NaN。標籤上的屬性像高度和寬度最終都是字符串 - 它們可能只是數字的字符串表示形式,但它們仍然是字符串類型。這聽起來像是可能發生的事情是,即使您將寬度設置爲「400」,瀏覽器也可能會將其解釋爲「400px」。額外的非數字字符可能會阻止它在不解析的情況下被視爲數字。 – Zach

+0

只是爲了澄清,這裏真正的問題是字符串的劃分(在下一行),並且通過存儲數字而不是字符串來解決分區中使用的值。一般來說,你可以在數組中存儲任何你想要的東西。 – Zach