#javascript #html
#javascript #HTML
Вопрос:
У меня есть форма с некоторыми входными данными, которые сгруппированы в массив по их имени:
<form name="myForm">
<input type="text" name="sibling[0][name]" />
<input type="text" name="sibling[0][dob]" />
<input type="text" name="sibling[1][name]" />
<input type="text" name="sibling[1][dob]" />
</form>
Я пытаюсь использовать javascript для доступа к элементу по имени. Как бы я к нему обратился? Я пробовал такие вещи, как:
js:
var formEl = document.myForm.elements[sibling][0][name]; //not correct
var formEl = document.myForm.elements.sibling[0][name]; //not correct
var formEl = document.myForm.sibling[0][name]; //not correct
Пожалуйста, помогите.
Ответ №1:
Вам нужно будет использовать обозначение в скобках, чтобы вы могли указать идентификатор в виде строки (где [
и ]
не имеют особого значения).
var formEl = document.myForm['sibling[0][name]'];
Комментарии:
1. Сначала я думал, что это использует какой-то
eval
… (видел ответы перед вопросом) : P
Ответ №2:
Предполагая, что это должен быть HTML, это недопустимые имена. Например, из w3 html4:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Конечно, это не означает, что он не будет работать в каком-либо браузере.
Я бы посоветовал вам присвоить им идентификаторы по некоторому соглашению, затем использовать document.getElementById() или document.getElementsByTagName().
Ответ №3:
Это работает:
document.getElementsByName("sibling[1][name]")[0]
Комментарии:
1. document.getElementsByName(имя) возвращает массив элементов, которые соответствуют этому имени. Добавление [0] ссылается на первый элемент, и если вы не используете одно и то же имя для разных элементов, вы знаете, что желаемый элемент будет первым элементом возвращаемого массива.