我正在使用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.
请帮助我做出改变。提前谢谢。
答案 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
,因为最后一个基本上没有做任何事情,只是评估一个对象,然后获取对象值(它不会评估值本身)。