2012-11-02 2 views
1

다음 자바 스크립트를 실행하면 input_array[input_array.length] = id;이 주석 처리되지 않은 경우 오류가 발생합니다. 아무도 이것을 일으키는 것을 볼 수 있습니까?배열을 채울 때 javascript가 실패합니다.

function cat_images_low_lag() { 
    var input_array = new array(); 

    cat_images = $(".category-description").next().find("img"); 
    cat_images.each(function() { 
     url = $(this).parent().attr("href"); 
     id = url.split("id="); 
     id = id[1]; 

     input_array[input_array.length] = id; 
    }); 
    alert ("trst"); 
    alert(input_array.join("\n")); 
} 

건배!

var input_array = new array(); 

으로 :

var input_array = new Array(); 

를 삽입하려면이 옵션을 사용

+4

그것은해야한다'Array' 자본 "A", 또는 더 나은 아직 단지'var에 input_array = []; 또한' – Pointy

+1

은 "ID"와 "URL"을 선언한다 : 배열을 구축하는 것은 다음과 같은 것입니다 'var'으로 !! – Pointy

답변

3

우선, 대체 추가 직접

input_array.push(id); 

을 또는 :

input_array[input_array.length] = id; 
0 배열을 초기화개

다른 방법 :

var input_array = []; 
+2

또는 심지어'var input_array = []' – HBP

+0

@HBP 네, 할 수 있습니다 ... :) 그것도 추가했습니다! :) –

+1

대소 문자를 잊어 버렸습니다! –

0

배열의 귀하의 초기화가

var input_array = new array(); 

당신은 속기를 사용한다 잘못

var input_array = []; 

또는

var input_array = new Array(); 

또한, cat_images는 전역 범위의 변수가 될 것을 피하기 위해, 당신은이

var cat_images = $(".category-description").next().find("img"); 
+4

인덱스가 배열 길이보다 커지면 JavaScript에서 정상입니다. 언어는이를 명시 적으로 지원합니다. – Pointy

+0

@ 포인트 - 오, 설명해 주셔서 감사합니다. –

1

기타처럼 로컬로 대문자 문제를 언급 범위 지정 고려할 수 있지만, 당신은 jQuery를, 더 좋은 방식을 사용하고 있기 때문에

function cat_images_low_lag() { 
    var input_array = $(".category-description + * img").map(function() { 
     return this.parentNode.href.split("id=")[1]; 
    }).toArray(); 

    alert ("trst"); 
    alert(input_array.join("\n")); 
} 
+0

쿼리 선택기가 정확한지 잘 모르겠습니다. 나는'next'가 다음 형제만을 선택한다고 믿고'+ *'는'.category-description' 다음에 오는 모든 요소를 ​​선택합니다. – Shmiddty

+0

@Shmiddty : 당신은'~'선택자를 생각하고 있습니다. :)'+'는 다음 요소 형제만을 선택합니다. –

+0

당신 말이 맞아요. 나는'+'셀렉터를'li'의 문맥에서 사용하는 경향이 있으므로, 각 요소가 첫 번째''li''를 스타일링하는 결과를 낳습니다. – Shmiddty

관련 문제