2009-10-08 5 views
0

프롬프트 상자에 변수 값을 입력 할 수 있는지 궁금합니다. 원래 변수에 대한 경고로 나를 반환합니다.JS : 프롬프트 상자에 TRUE 값을 입력하고 변수에 경고를 표시합니다.

말 : var myGoal = "answer"; 내가 프롬프트에 "answer"를 입력하면, 좋은 방법은 "answer"내 가치를 복용 검색, 그것은 경고에 myGoal를 반환 할 필요없이 무엇을 할 것인가?

+0

경고 "는 대답을"말할 것이다. 어떤 이유로 든이 일을 할 수 없다고 생각합니다. 유스 케이스를 지정할 수 있습니까? –

+0

'window.prompt'에 조심하십시오 : 많은 일반적인 IE 7 설정에서는 작동하지 않습니다 (보안 설정에 따라 다름) –

답변

0
function test() 
{ 
    var answer = prompt("Hello? What is your name?",''); 
    alert(answer); 
} 
+0

Heh, 닫습니다. 나는 그것을 오히려 불충분하게 표현했다. 나는 그 값 (문자열/숫자)을 검색하고 변수를 반환하면서 내가 프롬프트에 입력 한 것을 정확히 취하는 방법이 있음을 의미합니다. 말 : var myGoal = "대답"; 프롬프트에 "answer"를 입력하면 "answer"라는 검색 값을 가져 와서 myGoal을 경고 메시지로 반환하는 것이 좋은 방법일까요? – Francis

0

원하는대로 달성하는 유일한 방법은 eval 함수를 사용하는 것입니다. Eval은 "악마 (evil)"기능이라고도합니다. 코드에 막대한 보안 허점을 가져올 수 있으며 매우 비효율적입니다. eval을 사용하지 마십시오.

변수에 할당 된 값은 항상 문자열, 숫자, 부울, 정의되지 않은 값, 배열, 함수 또는 개체 리터럴입니다. 변수 이름을 다른 변수에 값으로 할당 할 수 없습니다. 하나의 변수가 다른 변수에 할당 될 때 실제로 변수의 내용이 할당되기 때문입니다.

문자열을 변수 이름으로 변환하는 대신 명시 적으로 제공된 값을 테스트하기 위해 작성하려는 테스트를 다시 디자인해야합니다. 경고 오프 전역 객체 (창), 및 화재의 모든 당신이 찾고있는 값과 동일 하나를 발견하면 비록

function test(val) 
{ 
    for (var i in window) 
    { 
     if (window.hasOwnProperty(i) && window[i] === val) 
     { 
      alert(i); 
     } 
    } 
} 

이 기본적으로 반복이 같은

2

뭔가 트릭을 할 것입니다 . 당신이 약간 접근 방식을 변경하고자하는 경우

1

: 그 당신이 그것을 발견 할 때, myGoal에 할당 무엇 때문에

var Data = new Object(); 
Data["myGoal"] = "answer"; 
// ... 

// Get response from prompt... 
var response = /* ... */; 

for (var key in Data) 
{ 
    if (Data[key] == response) 
    { 
     alert(key); 
    } 
} 
관련 문제