为什么eval()在Javascript中给出未定义的值?

时间:2010-03-10 12:45:34

标签: javascript eval

我正在使用JavaScript编码。我创建了一个名为OQ_0且值为"0"的文本区域。当我在JavaScript中对该字段使用eval()方法时,它会给出值undefined。以下是JavaScript代码的一部分

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.

请帮助我做出改变。提前谢谢。

3 个答案:

答案 0 :(得分:5)

为什么不使用document.InitiateReturnsForm["OQ_" + 0].value

答案 1 :(得分:1)

尝试

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

在第二个和第三个警报中,您正在评估存储第一个评估对象的值的第二个变量。这就是错误发生的原因。

答案 2 :(得分:1)

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

由于你在tempOpenxQtyStr中放了一个字符串而不是一个对象,它会计算该字符串并返回0.

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

这里,您在包含字符串的变量上使用方法。这不起作用。它没有那种方法,这就是它返回未定的原因。

您可能想尝试eval(tempOpenxQtyStr.value)而不是eval(tempOpenxQtyStr).value,因为最后一个基本上没有做任何事情,只是评估一个对象,然后获取对象值(它不会评估值本身)。