Рассмотрим эту функцию:
function validate()
{
var acc = document.getElementsByName('acc').value;
var pass = document.getElementsByName('pass').value;
alert (acc);
}
И эта HTML-часть:
<table border="0" cellpadding="2" cellspacing="0" valign="top">
<tr>
<td class="td1">Account</td>
<td class="td2"><input type="text" name="acc" /></td>
</tr>
<tr class="td1">
<td>Password</td>
<td class="td2"><input type="password" name="pass" /></td>
</tr>
</table>
<div><button onClick="validate()" class="cupid-greenx">Login now</button></div>
Окно предупреждения отображается, но показывает "undefined".
javascript
html
dom
Юливер Галлето
источник
источник
document.getElementById
, которое возвращает ровно одно значение.var inputs = document.getElementsByTagName('input')
возвращает список узлов, из которого вы можете извлечь оба элемента следующим образом: var pass = inputs.item ('pass'). Просто совет: это может ускорить работу, если вы имеете дело с большим DOM, так какgetElementById
будет искать по всему дереву каждый раз, тогда как нодлист - нет, поэтому он быстрее ...Ответы:
Причина, по которой вы видите эту ошибку, заключается в том, что
document.getElementsByName
возвращает aNodeList
of elements. И aNodeList
of elements не имеет.value
свойства.Используйте вместо этого:
источник
Обратите внимание на множественное число в этом методе:
Это возвращает массив элементов, поэтому используйте [0], чтобы получить первое вхождение, например
источник
length
собственность, но это также не хватает много методов, таких какmap
,forEach
и т.д. Это объясняет , почему мы должны использовать:Array.prototype.forEach.call( NodeList, fn )
.Вы хотите это:
источник
getElementsByName
. Может, мне следовало прояснить это - не стесняйтесь редактировать, если хотите.Метод document.getElementsByName возвращает массив элементов. Например, вы должны сначала выбрать.
источник
источник