cari

Rumah  >  Soal Jawab  >  teks badan

Apakah kaedah querySelectorAll dan getElementsBy* kembali?

<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>
P粉060112396P粉060112396465 hari yang lalu607

membalas semua(2)saya akan balas

  • P粉904405941

    P粉9044059412023-08-25 17:17:22

    Anda menggunakan tatasusunan sebagai objek, getElementbyId dan getElementsByClassName ialah:

    getElementsByClassName

    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 getElementByClassName akan mengembalikan tatasusunan, dan tatasusunan itu getElementByClassName将返回一个数组,并且该数组具有样式< /code> 属性,您可以通过迭代来访问每个元素 memang

    mempunyai atribut style, anda boleh mengakses setiap dengan mengulang > elemen.

    getElementById 为您工作的原因,该函数将返回直接对象。因此,您将能够访问 styleIni adalah fungsi

    atribut. 🎜

    balas
    0
  • P粉520545753

    P粉5205457532023-08-25 16:48:41

    Milik AndagetElementById 代码之所以有效,是因为 ID 必须是唯一的,因此该函数始终只返回一个元素(如果没有找到,则返回 null).

    Namun, kaedah ini getElementsByClassName, getElementsByName, getItemByTagName, dan getElementsByTagNameNS Mengembalikan koleksi elemen yang boleh diubah.

    Nama kaedah memberikan petunjuk: getElement 暗示单数,而getElements menyiratkan jamak .

    Kaedah querySelector juga mengembalikan satu elemen, dan querySelectorAll mengembalikan koleksi yang boleh diubah.

    Koleksi boleh diulang boleh jadi NodeListHTMLCollectionNodeList atau

    HTMLCollection < /kod>

    satu>. getElementsByNamequerySelectorAll 均指定返回 节点列表;其他 getElementsBy* 方法 指定返回 < code>HTMLCollection

    document.getElements() 读取 style dan NodeListHTMLCollection 没有 style;只有 Element 具有 stylequerySelectorAll

    kedua-duanya nyatakan untuk mengembalikan senarai 🎜nod ;Kaedah 🎜getElementsBy* lain🎜 menentukan untuk mengembalikan < code>HTMLCollection, 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< dari 🎜document.getElements…🎜(…🎜) / kod> Sebab kegagalan. Dalam erti kata lain: 🎜NodeList atau 🎜HTMLCollection tidak mempunyai 🎜style sahaja 🎜Element mempunyai 🎜style. 🎜

    Koleksi "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

    Array.from

    kemudian anda boleh menggunakan forEach dan kaedah array lain seperti kaedah lelaran Array.from;那么您可以使用 forEach:

    Array.from(document.getElementsByClassName("myElement"))
      .forEach((element) => element.style.size = "100px");
    
    Dalam pelayar lama yang tidak menyokong kaedah Array.from atau lelaran, anda masih boleh menggunakan

    . Kemudian anda boleh mengulanginya seperti tatasusunan sebenar: Array.prototype.slice.call

    var elements = Array.prototype.slice
        .call(document.getElementsByClassName("myElement"));
    
    for(var i = 0; i < elements.length; ++i){
      elements[i].style.size = "100px";
    }
    
    Anda juga boleh mengulang

    sendiri, tetapi ambil perhatian bahawa dalam kebanyakan kes koleksi ini adalah

    langsungNodeListHTMLCollection (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,

    :

    document.querySelectorAll(".myElement")
      .forEach((element) => element.style.size = "100px");
    
    NodeList 提供了一些迭代方法,例如现代浏览器中的 forEachAnda juga boleh menggunakan gelung

    mudah:

    var elements = document.getElementsByClassName("myElement");
    
    for(var i = 0; i < elements.length; ++i){
      elements[i].style.size = "100px";
    }
    
    forNarasi:

    .childNodes< /a> menjana

    live NodeList dan .children.childNodes< /a> 产生一个 live NodeList.children 生成一个 live HTMLCollection menjana

    live
    HTMLCollection, 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": 🎜
    $(".myElement").css("size", "100px");
    

    balas
    0
  • Batalbalas