Pertimbangkan fungsi ini:
function validate()
{
var acc = document.getElementsByName('acc').value;
var pass = document.getElementsByName('pass').value;
alert (acc);
}
Dan bagian HTML ini:
<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>
Kotak peringatan ditampilkan, tetapi menunjukkan "tidak terdefinisi".
javascript
html
dom
Juliver Galleto
sumber
sumber
document.getElementById
, yang mengembalikan tepat satu nilai.var inputs = document.getElementsByTagName('input')
:, mengembalikan nodelist, dari mana Anda dapat mengekstrak kedua elemen seperti: var pass = inputs.item ('pass'). Hanya sebuah tip, ini dapat mempercepat jika Anda berurusan dengan DOM besar, karenagetElementById
akan mencari seluruh pohon setiap kali, sedangkan seorang ahli nodal tidak akan, jadi lebih cepat ...Jawaban:
Alasan Anda melihat kesalahan itu adalah karena
document.getElementsByName
mengembalikanNodeList
elemen. DanNodeList
elemen tidak memiliki.value
properti.Gunakan ini sebagai gantinya:
sumber
Perhatikan bentuk jamak dalam metode ini:
Itu mengembalikan array elemen, jadi gunakan [0] untuk mendapatkan kejadian pertama, misalnya
sumber
length
properti, tapi itu juga hilang banyak metode, sepertimap
,forEach
, dll yang menjelaskan mengapa kita perlu menggunakan:Array.prototype.forEach.call( NodeList, fn )
.Kamu mau ini:
sumber
getElementsByName
. Mungkin saya harus membuatnya lebih jelas - silakan mengedit jika Anda mau.Metode document.getElementsByName mengembalikan array elemen. Anda harus memilih dulu, misalnya.
sumber
sumber