it-swarm-id.com

Bagaimana cara menggunakan document.getElementByName dan getElementByTag?

 document.getElementById('frmMain').elements

dapatkah saya menggunakan seperti ini 

document.getElementByName('frmMain').elements 

atau 

document.getElementBytag('table').elements`
15
document.getElementById('frmMain').elements 
  • mengasumsikan formulir memiliki ID dan bahwa ID itu unik seperti ID seharusnya. Meskipun itu juga mengakses atribut name di IE, tambahkan ID ke elemen jika Anda ingin menggunakan getElementBy Id

document.getElementsByName('frmMain')[0].elements 
  • akan mendapatkan elemen dari objek pertama bernama frmMain di halaman - perhatikan getElement jamak s - itu akan mengembalikan koleksi.

document.getElementsByTagName('form')[0].elements
  • akan mendapatkan elemen dari formulir pertama pada halaman berdasarkan tag - lagi perhatikan getElement jamak s

Alternatif yang bagus adalah 

document.querySelector("form").elements 
  • akan mendapatkan elemen formulir pertama di halaman. "Form" adalah pemilih CSS yang valid

 document.querySelectorAll("form")[0].elements 
  • perhatikan All - itu adalah koleksi. [0] akan mendapatkan elemen dari formulir pertama di halaman. "Form" adalah pemilih CSS yang valid
21
mplungjan

getElementById mengembalikan referensi ke elemen dengan id yang cocok dengan argumen, atau null jika tidak ada elemen seperti itu dalam dokumen.

getElementsByName () (perhatikan jamak Elemen) mengembalikan HTMLCollection (mungkin kosong) elemen dengan nama yang cocok dengan argumen. Perhatikan bahwa IE memperlakukan atribut dan properti nama dan idsebagai hal yang sama, jadi getElementsByName akan mengembalikan elemen dengan pencocokan id juga.

getElementsByTagName mirip tetapi mengembalikan NodeList . Semuanya ada dalam spesifikasi yang relevan.

8
RobG

Saya berasumsi Anda berbicara tentang getElementById() mengembalikan referensi ke elemen sementara yang lain mengembalikan daftar simpul. Berlangganan saja nodelist untuk yang lain, mis. document.getElementBytag('table')[4].

Juga, elements hanya merupakan properti dari form (HTMLFormElement), bukan table seperti pada contoh Anda.

0
alex

Jika Anda telah memberikan nama teks yang sama untuk properti Id dan Name Anda, Anda dapat memberikan seperti document.getElementByName('frmMain')[index] kesalahan objek lain yang diperlukan akan muncul. Dan jika Anda hanya memiliki satu tabel di halaman Anda, Anda dapat menggunakan document.getElementBytag('table')[index].

EDIT:

Anda dapat mengganti indeks sesuai dengan formulir Anda, jika formulir pertama menempatkan 0 untuk indeks.

Ini getElementsByName() dan getElementsByTagName() - perhatikan "s" di "Elements", yang menunjukkan bahwa kedua fungsi mengembalikan daftar elemen, yaitu, NodeList, yang akan Anda akses seperti array. Perhatikan bahwa fungsi kedua berakhir dengan "TagName" bukan "Tag".

Bahkan jika fungsi hanya mengembalikan satu elemen itu masih akan berada dalam NodeList dengan panjang satu. Begitu:

var els = document.getElementsByName('frmMain');
// els.length will be the number of elements returned
// els[0] will be the first element returned
// els[1] the second, etc.

Dengan asumsi formulir Anda adalah formulir pertama (atau satu-satunya) pada halaman Anda dapat melakukan ini:

document.getElementsByName('frmMain')[0].elements
document.getElementsByTagName('table')[0].elements
0
nnnnnn