Как разобрать переменную в Javascript - PullRequest
1 голос
/ 05 мая 2009

Я пытаюсь использовать этот код:

var field="myField";
vals[x]=document.myForm.field.value;

В HTML-код у меня есть

<form name="myForm">
  <input type='radio' name='myField' value='123' /> 123
  <input type='radio' name='myField' value='xyz' /> xyz
</form>

Но это дает мне ошибку:

document.myForm.field is undefined

Как мне заставить field рассматриваться как переменную, а не поле?

Ответы [ 4 ]

7 голосов
/ 05 мая 2009

Предполагая, что ваш другой синтаксис правильный (я не проверял), это будет делать то, что вы хотите:

var field="myField";
vals[x]=document.myForm[field].value;

В JS оператор скобки - это метод доступа get-property-by-name. Вы можете прочитать больше об этом здесь .

3 голосов
/ 05 мая 2009

Используйте элементы [] collection

document.forms['myForm'].elements[field]

коллекция элементов в спецификации DOM

КСТАТИ. Если у вас есть два поля с одинаковым именем, чтобы получить значение любого поля, вы должны прочитать:

var value = document.forms['myForm'].elements[field][index_of_field].value

например.

var value = document.forms['myForm'].elements[field][0].value

и, если вы хотите получить значение выбранного радиокнопки, вы должны проверить, какой из них выбран

var e = document.forms['myForm'].elements[field];
var val = e[0].checked ? e[0].value : e[1].checked ? e[1].value : null;
2 голосов
/ 05 мая 2009

Вы должны сделать это так:

var field = "myField";
vals[x] = document.myForm[field].value;

или даже

vals[x] = document.forms.myForm.elements[field].value;
0 голосов
/ 05 мая 2009

Судя по вашим тегам, вы используете jQuery. Если это так, вы можете просто сделать это, и это сделает вашу жизнь намного проще:

var vals = new Array();
$("form[name='myForm'] :radio").each(function() { 
    vals.push($(this).val()); 
});

: - D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...