2010-03-10 5 views
1

JavaScript 코딩 작업 중입니다. 이름이 OQ_0이고 값이 "0" 인 텍스트 영역을 만들었습니다. 해당 필드에 대해 eval() 메서드를 사용하면 JavaScript에서 값이 undefined이됩니다. 아래는 자바 스크립트 코드의 일부eval()이 자바에서 정의되지 않은 값을주는 이유는 무엇입니까?

var tempOpenQtyStr = "document.InitiateReturnsForm.OQ" + "_" + 0; 
var tempOpenxQtyStr = eval(tempOpenQtyStr).value; 
alert('Manuals =' + document.InitiateReturnsForm.OQ_0.value); 
alert('eval(tempOpenxQtyStr) =' + eval(tempOpenxQtyStr)); 
alert('eval(tempOpenxQtyStr).value =' + eval(tempOpenxQtyStr).value); 

출력 :

Manuals = 0 
eval(tempOpenxQtyStr) = 0 --- Here it is suppose to show "[object]" 
eval(tempOpenxQtyStr).value = undefined. 

이 좋은 말 할 변화가 무엇인지 좀 도와. 미리 감사드립니다.

+1

DOM 관련 자료를 게시 해주세요. 감사합니다. –

+0

eval() 사용을 중단하십시오 !! 이 모든 것은 나쁜 생각입니다. – Pointy

답변

5

document.InitiateReturnsForm["OQ_" + 0].value을 사용하지 않는 이유는 무엇입니까?

1

는 처음 평가 대상의 값을 저장하는 제 2 가변을 평가하는 두 번째 및 세 번째에서 경고

alert('eval(tempOpenxQtyStr) = ' + eval(tempOpenQtyStr)); 
alert('eval(tempOpenxQtyStr).value = ' + eval(tempOpenQtyStr).value); 

보십시오. 그래서 오류가 발생합니다. 당신이 문자열을 넣어 때문에

+0

@Phil을 편집 해 주셔서 감사합니다. – rahul

1
alert('eval(tempOpenxQtyStr) =' + eval(tempOpenxQtyStr)); 

가 아닌 객체는 tempOpenxQtyStr 안에, 그 문자열을 평가하고 당신이 문자열이 포함 된 변수의 메소드를 사용하고 여기에 0

alert('eval(tempOpenxQtyStr).value =' + eval(tempOpenxQtyStr).value); 

반환합니다. 그건 작동하지 않습니다. 그것은 그 방법이 없기 때문에 그것이 무결점으로 돌아온 이유입니다.

eval(tempOpenxQtyStr.value) 대신 eval(tempOpenxQtyStr).value을 쓰고 싶을 수도 있습니다. 마지막 하나는 기본적으로 아무 것도하지 않으므로 개체를 평가 한 다음 개체 값을 가져 오는 것입니다 (값 자체를 평가하지 않습니다).

관련 문제