2013-04-07 5 views
3

의 특성 '텍스트'를 설정할 수 없습니다 기본적으로 다음과 같은catch되지 않은 형식 오류 : 나는 "catch되지 않은 형식 오류 : 정의되지 않은 재산 '텍스트'를 설정할 수 없습니다"오류를 얻고있다 정의되지 않은

var years= new Array(113); 
for(i=0;i<113;i++){ 
years[i]["text"]=i+1900; 
years[i]["value"]=i+1900; 
} 

을 실행에, 나는 이런 식으로 뭔가를 원하는 루프로 생성 될 수 있습니다.

var years= [ 
     { text: "1990", value: 1990, }, 
     { text: "1991", value: 1991, }, //till 2012 
]; 

어떤 도움이 필요합니까?

답변

6

는 리터럴 표기법을 원하는 :

var years= new Array(113); 
for(i=0;i<113;i++){ 
    years[i] = {text: String(i + 1900), value: i + 1900}; 
} 

당신이 오류가 발생 된 이유는 years[i]에 아무것도 지정되지 않을 것입니다,하지만 당신은 얻을 "의미 (그것을 표현 years[i]["text"]사용에 노력하고 있었다 years 오브젝트의 이름이 i 인 속성을 가져온 다음 그 속성을 으로 지정하십시오.

표준 배열에 대한 공간을 사전 할당하려고 시도해도 이점은 없습니다. 자바 스크립트, 표준 배열 aren't really arrays at all 때문에. 그래서 아마도 : 마찬가지로

var years= []; 
for(i=0;i<113;i++){ 
    years[i] = {text: String(i + 1900), value: i + 1900}; 
} 

, 당신은 2013 (독점)보다는 루프에서 그 또한 모든 일에 1900 (포함)에서 불과 루프 수 :

var years= []; 
for(i=1900;i<2013;i++){ 
    years.push({text: String(i), value: i}); 
} 
1

년는 [i]는 아니다 아무것도 (years[i] == undefined)로 설정하면 텍스트에 액세스 할 수 없습니다.

var years = new Array(113); 
for(i=0; i < 113; i++) { 
    years[i] = {"text": i+1900, "value": i+1900}; 
} 

또는

var years = new Array(); 
for(i=0; i < 113; i++) { 
    years.push({"text": i+1900, "value": i+1900}); 
} 
0

귀하의 질문은 이미 답했지만 내가 대신 명시 적 생성자 호출의 배열 리터럴 표기법을 사용하여 제안 다음과보십시오.

var years = []; 

for (var i = 0; i < 133; ++i) 
{ 
    years[i] = { 
     text: (i + 1900).toString(), 
     value: i + 1900 
    }; 
} 
관련 문제