Apakah kaedah querySelectorAll dan getElementsBy* kembali?
P粉060112396
2023-08-24 19:45:56
<p><code>getElementsByClassName</code> (dan fungsi serupa seperti <code>getElementsByTagName</code> dan <code>querySelectorAll</code>B> dengan cara yang sama? Kembalikan tatasusunan elemen? </p>
<p>Sebab saya bertanya adalah kerana saya cuba menukar gaya semua elemen menggunakan <code>getElementsByClassName</code>. lihat di bawah. </p>
<pre class="brush:php;toolbar:false;">//tidak berfungsi
document.getElementsByClassName('myElement').style.size = '100px';
//berfungsi
document.getElementById('myIdElement').style.size = '100px';</pre></p>
Anda menggunakan tatasusunan sebagai objek,
getElementbyId
dangetElementsByClassName
ialah:getElementbyId
akan mengembalikan objek elemen atau batal jika tiada elemen dengan ID itu ditemuigetElementsByClassName
akan mengembalikan Live HTMLCollection, yang mungkin panjangnya 0getElementsByClassName
https://www.w3.org/ TR/2008/WD-html5-20080610/dom.html#getelementsbyclassname
Dapatkan ElementById
https://developer.mozilla.org/en- US/docs/Web/API/Document/getElementById
Sertakan baris berikut dalam kod anda:
akan tidak berfungsi seperti yang diharapkan kerana
mempunyai atributgetElementByClassName
akan mengembalikan tatasusunan, dan tatasusunan itugetElementByClassName
将返回一个数组,并且该数组不具有样式 属性,您可以通过迭代来访问每个
元素
memangstyle
, anda boleh mengakses setiapdengan mengulang > elemen
.getElementById
为您工作的原因,该函数将返回直接对象。因此,您将能够访问style
Ini adalah fungsiMilik Anda
getElementById
代码之所以有效,是因为 ID 必须是唯一的,因此该函数始终只返回一个元素(如果没有找到,则返回null
).Namun, kaedah ini
getElementsByClassName
,getElementsByName
,getItemByTagName
, dangetElementsByTagNameNS
Mengembalikan koleksi elemen yang boleh diubah.Nama kaedah memberikan petunjuk:
getElement
暗示单数,而getElements
menyiratkan jamak .Kaedah
querySelector
a> juga mengembalikan satu elemen, danquerySelectorAll code>
mengembalikan koleksi yang boleh diubah.Koleksi boleh diulang boleh jadi
HTMLCollectionNodeList
或HTMLCollection
NodeList一个> atausatu>.
getElementsByName
和querySelectorAll
均指定返回节点列表
;其他getElementsBy*
方法 指定返回 HTMLCollection
kedua-duanya nyatakan untuk mengembalikan senarai 🎜nod code> ;Kaedah 🎜getElementsBy* lain🎜 menentukan untuk mengembalikan HTMLCollection code>, Walau bagaimanapun, sila ambil perhatian bahawa sesetengah versi penyemak imbas melaksanakan ini secara berbeza. 🎜 🎜Dua jenis koleksi ini tidak memberikan sifat yang sama seperti elemen, nod atau jenis yang serupa; inilah sebabnya membaca 🎜style…🎜(…🎜) / kod> Sebab kegagalan. Dalam erti kata lain: 🎜NodeList atau 🎜HTMLCollection tidak mempunyai 🎜style sahaja 🎜Element mempunyai 🎜style. 🎜document.getElements
…(
…)
读取style
danNodeList
或HTMLCollection
没有style
;只有Element
具有style
querySelectorAllKoleksi "seperti tatasusunan" ini ialah senarai sifar atau lebih elemen yang perlu anda ulangi untuk mengaksesnya. Walaupun anda boleh mengulanginya seperti tatasusunan, sila ambil perhatian bahawa ia tidak sama dengan noreferrer">s.
Dalam penyemak imbas moden anda boleh menggunakan数组
kemudian anda boleh menggunakan
forEach
dan kaedah array lain seperti kaedah lelaranArray.from
;那么您可以使用forEach
: Dalam pelayar lama yang tidak menyokong kaedah Array.from atau lelaran, anda masih boleh menggunakan. Kemudian anda boleh mengulanginya seperti tatasusunan sebenar:
sendiri, tetapi ambil perhatian bahawa dalam kebanyakan kes koleksi ini adalahArray.prototype.slice.call
Anda juga boleh mengulanglangsung
:NodeList
或HTMLCollection
(dokumentasi MDN, spesifikasi DOM), iaitu ia dikemas kini apabila DOM berubah. Jadi jika anda memasukkan atau mengalih keluar elemen semasa menggelung, pastikan anda tidak sengaja langkau beberapa elemen atau cipta gelung tak terhingga. Dokumentasi MDN hendaklah sentiasa menunjukkan sama ada kaedah mengembalikan koleksi langsung atau koleksi statik. Sebagai contoh,NodeList
提供了一些迭代方法,例如现代浏览器中的forEach
Anda juga boleh menggunakan gelung mudah:for
Narasi:live
liveNodeList
dan.children
.childNodes
产生一个 liveNodeList
和.children
生成一个 liveHTMLCollection
menjanaHTMLCollection
, jadi kedua-dua getter ini juga perlu dikendalikan dengan jaga.Terdapat perpustakaan seperti
jQuery🎜 yang menjadikan pertanyaan DOM lebih pendek dan mencipta lapisan abstraksi di atas "elemen" dan "koleksi elemen": 🎜