Во -первых, давайте посмотрим на пример:
Кода -копия выглядит следующим образом:
<form name = "buyerform" method = "post" action = "/mysport/control/user/list.do">
<input type = "fackbox" id = "usernames" value = "testtest"> testtest <br>
<input type = "fackbox" name = "usernames" value = "testtest"> testtest <br>
<input type = "text" id = "usernames" value = "testtest"> testtest <br>
</form>
Document.forms [0] Когда на странице HTML есть форма формы или несколько форм формы, он возвращает массив форм типа Nodelist.
document.forms [0] .usernames, здесь имена пользователей могут быть значением идентификатора или имени, где эти два атрибута эквивалентны. Более того, это не различает, является ли компонент текстовым поле, радиочастотно или флажок.
В настоящее время нам нужно различать две ситуации .
Когда входной идентификатор или имя является «именами пользователей», Document.forms [0] .usernames возвращает конкретный входной компонент. Если он работает, он должен использоваться в соответствии с конкретным методом работы компонента.
В настоящее время Alert (document.forms [0] .usernames.length) возвращает неопределенную, потому что входной компонент не имеет свойства длины.
Когда есть два или более идентификаторов ввода или имени «Имен пользователей», Document.forms [0] .Usernames возвращает массив Nodelist. В это время,
Alert (document.forms [0] .usernames.length) вернет длину массива. В приведенном выше примере возвратное значение составляет 3.
Следовательно, при использовании JS для выбора всех, рассмотрите ситуацию, когда есть один и несколько флажков с одинаковым именем.
Кода -копия выглядит следующим образом:
функция allSelect () {
var form = document.forms [0];
var state = form.allectbox.cecked;
var length = form.usernames.length; // Когда есть два или более имен флажки, которые являются именами пользователей, длина массива возвращается
// Когда есть имя флажести, которое является именами пользователей, form.usernames возвращает объект флажки, а не массив, поэтому его свойство не определено.
if (длина) {// в javaScript, до тех пор, пока оцениваемое условие составляет 0, нулевое или неопределенное, оно считается ложным, а другие случаи считаются истинными
для (var i = 0; i <length; i ++) {
form.usernames [i] .Checked = state;
}
}
еще{
form.usernames.checked = state;
}
}
Существует идентификатор компонента «имен пользователей» или несколько идентификаторов компонентов - «Имена пользователей», Document.getElementByID («Имена пользователей») возвращает значение, возвращаемое компонентом формы. Когда несколько идентификаторов компонентов являются «именами пользователей», первым идентификатором компонента является «имена пользователей».
Существует имя компонента «Имена пользователей» или несколько имен компонентов «Имена пользователей», Document.GetElementsByName () возвращает массив HTMLCollection. Обратите внимание на разницу от Document.getElementsbytagname (), которая получает массив в соответствии с категорией тегов.
var names = document.getElementsbytagname ("имена пользователей"), оповещение (имена [0]), возвращаемый здесь результат не определен. Раньше я смешивал ByName с Bytagname, и ни один тег начинается с имен пользователей. <erancers value = ''> </usernames> этого не существует.
Тем не менее, возврат GetElementsBytagName по -прежнему является коллекцией массивов, в которой не содержится какого -либо контента, имена [0] не существует, поэтому возврат не определен, поскольку, когда диапазон массива превышен, неопределенное значение появляется.
var test = {'0', '1', '2',}; alert (test [3]); возвращает неопределенные.