2010-07-01 5 views
10

내가했다 상상 루프에서 변수 이름을 생성 할 수 있습니다 : <div id names>142,140,150</names>자바 스크립트/HTML은

그럼 내가이 값은

var list = document.getElementById('names').innerHTML.Split(','); 

for(i=0; i<list.Length; i++){ 
    var 'beginning' + list[i]; 
} 
즉, 추가로, 변수 이름을 선언하는 forloop 쓰기 (자바 스크립트)에 수

그래서 본질적으로 만들 것입니다 :

 
var beginning142 
var beginning140 
var beginning150 

답변

7

당신은 참으로 할 수 있습니다

window['beginning' + list[i]] = 'value'; 

우연의 일치, 나는 이것과 10 초 전에 매우 밀접한 관련이있는 질문에 답했다. 그런 다음 이것을 정확하게 예로 사용했다. 그래서 a more elaborate explanation on why this works is available here.

+0

+1 좋은 답변입니다. Javascript는 obj [ "test"]와 같은 방식으로 obj.test를 처리하며 전역 변수는 모두 window-object에 저장되므로 window [ "test"] = "something"; 경보 (시험); "무언가"라는 경고 상자를 받으십시오. – Alxandr

3

낮은 평판 점수로 인해 질문에 답변을 추가 할 수 없습니다. 답변이 아니라 조언입니다. 내가 뭔가 열쇠 142,140,150 단일 어레이를 생성하기 위해 더 좋을 거라 생각 ...

+1

그의 질문은 많았거나 그렇지 않은 경우 가능했다. 그럼에도 불구하고 – Alxandr

+1

. '가변 변수'는 거의 항상 두려운 실수이기 때문에 경고의 단어가 필요합니다. 그것을 사용하는 방법을 묻는 대부분의 사람들은 큰 실수로 그것을하고 있습니다. – bobince

5

당신은 같은 것을 할 수있다 : 이것은 좋은 기사 중 하나가 평가에 대해 얘기입니다

for(var i = 0; i<100; i++) 
{ 
    eval("var beginning"+i); 
} 

평가에서 두려워 개발자의 경우를 그렇지 않은 악한 방법 : http://www.nczonline.net/blog/2013/06/25/eval-isnt-evil-just-misunderstood/

나는 당신이 밖으로 실행 가서 사방 평가() 를 사용하여 시작해야 말하는 게 아니에요. 사실, eval()을 실행하는 데는 좋은 사용 사례가 거의 없습니다. 코드 명확성, 디버그 가능성, 그리고 간과해서는 안되는 성능에 대해서는 분명히 우려하고 있습니다. 그러나 eval()이 적합한 경우를 사용하는 것을 두려워해서는 안됩니다. 먼저 사용하지 말고 사람이 eval() 을 적절히 사용하면 코드가 더 취약하거나 덜 안전하다고 생각하게 만들지 마십시오.

+2

그것은 작동합니다! 제 의견으로는이 솔루션은 좋은 점수를받을 자격이 있으며, 매우 깨끗하고 정확합니다. +1 – Armand

+0

"eval()이 적합한 경우가 있습니다."- 이것은 하나가 아닙니다. JavaScript는이 문제를 처리 할 Object 데이터 구조를 제공합니다. – Quentin

3

왜 그 값을 속성으로 갖는 객체를 정의하지 않습니까? 예를 들어

:

var myVariable = function(id, value){ 
this.Id = id; 
this.Value = value; 
}; 

그러면 당신은이 객체를 인스턴스화 할 수 있습니다. 나는 그것이 덜 복잡하고 결국 읽을 수 있다고 생각한다.

+0

+1 - 자바 스크립트 객체 ('{}')의 유연성을 통해 새로운 유형의 객체를 만드는 것이 똑같은 일임을 쉽게 잊을 수 있습니다. – Anurag