2011-10-19 2 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», браузер может интерпретировать ее как «400 пикселей». Дополнительные символы, отличные от числа, вероятно, не позволяют ему обрабатываться как число без синтаксического анализа. – Zach

+0

Просто для пояснения, настоящая проблема здесь заключается в разделении строк (на следующей строке), и это решается путем хранения чисел вместо строк для значений, используемых в делении. В общем, вы можете хранить все, что хотите, в массиве. – Zach

Смежные вопросы