Rumah >hujung hadapan web >tutorial js >Perbezaan antara document.forms[0] dan getElementByName dalam kemahiran JavaScript_javascript
Mula-mula mari kita lihat contoh:
document.forms[0] Apabila terdapat borang borang atau berbilang borang dalam halaman HTML, tatasusunan borang jenis NodeList dikembalikan
document.forms[0].nama pengguna, di mana nama pengguna boleh menjadi nilai id atau nilai nama, kedua-dua atribut ini bersamaan di sini. Selain itu, ia tidak membezakan sama ada komponen itu ialah kotak teks, butang radio, atau kotak semak.
Pada masa ini dua situasi perlu dibezakan ,
Apabila terdapat input yang id atau namanya ialah 'nama pengguna', document.forms[0].nama pengguna mengembalikan komponen input tertentu Jika anda mengendalikannya pada masa ini, anda mesti menggunakannya mengikut kaedah pengendalian komponen tertentu .
Pada masa ini, alert(document.forms[0].usernames.length) mengembalikan tidak ditentukan kerana komponen input tidak mempunyai atribut panjang.
Apabila terdapat dua atau lebih input yang id atau namanya ialah 'nama pengguna', document.forms[0].nama pengguna mengembalikan tatasusunan NodeList Pada masa ini,
alert(document.forms[0].usernames.length) akan mengembalikan panjang tatasusunan Dalam contoh di atas, nilai pulangan ialah 3
Oleh itu, apabila menggunakan js untuk memilih semua, anda mesti mempertimbangkan situasi di mana terdapat satu atau lebih kotak pilihan dengan nama yang sama
Jika terdapat satu komponen dengan id 'nama pengguna' atau berbilang id komponen dengan 'nama pengguna', nilai yang dikembalikan oleh document.getElementById('nama pengguna') ialah komponen borang Apabila terdapat berbilang komponen dengan id daripada 'nama pengguna', pulangan ialah komponen pertama dengan id 'nama pengguna'.
Jika terdapat komponen dengan nama 'nama pengguna' atau berbilang komponen dengan nama 'nama pengguna', document.getElementsByName() mengembalikan tatasusunan HTMLCollection. Perhatikan perbezaan dengan document.getElementsByTagName(), yang memperoleh tatasusunan berdasarkan kategori teg.
var names = document.getElementsByTagName("nama pengguna"), alert(nama[0]) Hasil yang dikembalikan di sini adalah tidak ditakrifkan pada asalnya saya mengelirukan byName dengan byTagName, dan tiada teg bermula dengan nama pengguna,
Walau bagaimanapun, getElementsByTagName masih mengembalikan koleksi tatasusunan, yang tidak mengandungi sebarang kandungan[0] tidak wujud, jadi undefined dikembalikan, kerana apabila ia melebihi julat tatasusunan, semua nilai yang tidak ditentukan akan muncul.
var test = {'0','1','2',};alert(test[3]); kembali tidak ditentukan.