2011-10-19 2 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] = $ ("# 슬라이더 img : eq ("+ i + ")");'code' 이것은 예를 들어 객체가 될 것입니다 ... 그리고 그들은 태그에 설정되어 있습니다 ... 이해하지 못했습니다 ... – wintercounter

+0

숫자 이외의 것을 저장할 수는 있지만 수학을 사용하면 NaN이됩니다. 높이와 너비와 같은 태그의 속성은 궁극적으로 문자열입니다. 문자열의 숫자 표현 일 수도 있지만 여전히 문자열 유형입니다. 무슨 일이 벌어지고있는 것처럼 들리지만, 너비를 "400"으로 설정해도 브라우저가이를 "400px"로 해석 할 수 있습니다. 여분의 숫자가 아닌 문자는 아마도 구문 분석하지 않고 번호로 취급되지 않을 것입니다. – Zach

+0

명확히하기 위해 여기에서 진짜 문제는 문자열의 나누기 (다음 줄에 있음)입니다.이 문자열은 해당 문자열에 사용되는 값 대신 문자열 대신 숫자를 저장함으로써 해결됩니다. 일반적으로 배열에 원하는 것을 저장할 수 있습니다. – Zach

관련 문제