Почему eval () дает неопределенное значение в Javascript? - PullRequest
1 голос
/ 10 марта 2010

Я работаю в коде JavaScript. Я создал текстовую область с именем OQ_0 и значением "0". Когда я использую метод eval() для этого поля в JavaScript, он дает значение 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 ]

5 голосов
/ 10 марта 2010

Почему бы просто не использовать document.InitiateReturnsForm["OQ_" + 0].value?

1 голос
/ 10 марта 2010
alert('eval(tempOpenxQtyStr ) =' + eval(tempOpenxQtyStr));

Поскольку вы помещаете строку, а не объект, внутри tempOpenxQtyStr, она оценивает эту строку и возвращает 0.

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

Здесь вы используете метод для переменной, содержащей строку. Это не работает У него нет такого метода, поэтому он возвращает неопределенное значение.

Возможно, вы захотите попробовать сделать eval(tempOpenxQtyStr.value) вместо eval(tempOpenxQtyStr).value, так как последний в основном ничего не делает, просто оценивает объект и затем извлекает значение объекта (само значение не оценивается).

1 голос
/ 10 марта 2010

Попробуйте

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

Во втором и третьем предупреждении вы оцениваете вторую переменную, в которой хранится значение первого оцениваемого объекта. Вот почему возникает ошибка.

...