.html(), .text()) mengembalikan kaedah DOM Standard yang tidak ditentukan yang mengembalikan nol menghasilkan ralat berikut: Ralat Jenis Uncaught: Tidak boleh menetapkan sifat nol '.."> Mengapa jQuery atau getElementById tidak dapat mencari elemen?-Soal Jawab Rangkaian PHP Cina
Mengapa jQuery atau getElementById tidak dapat mencari elemen?
P粉575055974
P粉575055974 2023-10-15 14:53:18
0
2
615
Apakah sebab yang mungkin mengapa elemen tidak boleh ditemui oleh

document.getElementById$("#id")atau mana-mana kaedah DOM/pemilih jQuery yang lain?

Contoh soalan termasuk:

  • jQuery secara senyap gagal mengikat pengendali acara
  • Kaedah "pengambil" jQuery (.val()、>.html()、.text()) 返回undefined
  • Kaedah DOM standard mengembalikannullmengakibatkan ralat berikut:

Uncaught TypeError: Tidak dapat menetapkan sifat nol '...'

Ralat Jenis Tidak Ditangkap: Tidak dapat menetapkan sifat pada null (menetapkan '...')

Ralat Jenis Tidak Ditangkap: Tidak dapat membaca sifat '...' nol

Ralat Jenis Tidak Ditangkap: Tidak dapat membaca sifat nol (baca '...')

Bentuk yang paling biasa ialah:

Uncaught TypeError: Tidak boleh menetapkan sifat 'onclick' kepada null

Ralat Jenis Tidak Ditangkap: Tidak dapat membaca sifat 'addEventList ener' null

Ralat Jenis Tidak Ditangkap: Tidak dapat membaca 'gaya' sifat nol


P粉575055974
P粉575055974

membalas semua (2)
P粉976737101

Ringkas:Sebab elemen yang anda cari belum wujud lagi dalam dokumen.


Untuk selebihnya jawapan ini saya akan menggunakansepertigetElementById,但这同样适用于getElementsByTagName,querySelector, serta mana-mana kaedah DOM lain untuk memilih elemen.

Sebab yang mungkin

Tiga sebab mengapa unsur

mungkin tidak wujud:

  1. Elemen dengan ID yang diluluskan tidak wujud dalam dokumen. Anda hendaklah menyemak semula sama ada ID yang anda hantar kepadagetElementByIdsebenarnya sepadan dengan ID elemen sedia ada dalam HTML (dihasilkan) dan supaya anda tidak tersilap mengeja ID tersebut (ID adalahsensitif huruf besar/kecil!).

    Jika anda menggunakangetElementById,请确保您提供元素的 ID(例如document.getElemntById("the-id “))。如果您使用的方法接受 CSS 选择器(例如querySelector),请确保在 ID 之前包含#以表明您正在查找ID(例如,document.querySelector("#the-id"))。您不能#getElementById一起使用,并且必须将其与querySelector一起使用和类似的。另请注意,如果 ID 中包含在CSS 标识符(例如.;包含.字符的id属性是不好的做法,但有效),您必须使用querySelector(document.querySelector("#the\.id"))) 时转义这些内容,但使用getElementById(>document.getElementById("the.id"), pastikan anda

    hanya
  2. berikan ID elemen (cth. document.getElemntById("the-id ")). Jika anda menggunakan kaedah yang menerima pemilih CSS (contohnya, querySelector), pastikan anda memasukkan #sebelum ID untuk menunjukkan bahawa anda sedang mencari ID ( contohnya, document.querySelector ("#the-id")). Anda tidak boleh
  3. tidak

    menggunakan#dengangetElementById, dan

    mesti
  4. menggunakannya dengan querySelectordan seumpamanya. Juga ambil perhatian bahawa jika ID mengandungi aksara yang tidak sah dalam (cth..; atributidyang mengandungi.aksara adalah amalan buruk, tetapi sah), anda mesti menggunakanquerySelector (document.querySelector("#the\.id"))) , tetapi gunakan

    (>document.getElementById("the.id")).iframe中(这是它自己的文档)。当您搜索包含iframe

Elemen itu tidak wujud semasa anda memanggil

.iframe或类似文件中),您需要查看iframe中的文档,而不是父文档,也许可以通过获取iframe元素并使用其contentDocument

Walaupun anda boleh melihat elemen pada halaman, ia tiada dalam dokumen yang anda tanya kerana ia terdapat dalam dokumen untuk elemen dalam yang tidak dicari. Jika masalahnya ialah sebab 3 (pada atribut untuk mengakses dokumentasinya (asal yang sama sahaja)).

Sebab kedua - ia belum ada - sangat biasa. Pelayar menghuraikan dan memproses HTML dari atas ke bawah. Ini bermakna bahawa sebarang panggilan ke elemen DOM yang berlaku sebelum elemen DOM muncul dalam HTML akan gagal.

Pertimbangkan contoh berikut:

sssccc
           

div出现在script之后。执行脚本时,该元素尚不存在,并且getElementById将返回null.

jQuery

Ini juga terpakai kepada semua pemilih jQuery. Jika andatersalah ejapemilih anda, atau andacuba memilihnyasebelum ia benar-benar wujud, jQuery tidak akan menemuinya.

Masalah tambahan ialah apabila jQuery tidak ditemui kerana anda memuatkan skrip tanpa protokol dan menjalankannya daripada sistem fail:

sssccc

Sintaks ini digunakan untuk membenarkan skrip dimuatkan melalui HTTPS pada halaman dengan protokol https:// dan versi HTTP pada halaman dengan protokol http://

Ia mempunyai kesan sampingan yang malang apabila cuba memuatkanfile://somecdn.somewhere.com...

tetapi gagal

Penyelesaian

Sebelum memanggilgetElementById(atau mana-mana kaedah DOM dalam hal itu), pastikan elemen yang anda ingin akses wujud, iaitu DOM dimuatkan.

Cuma letak JavaScriptselepaselemen DOM yang sepadan untuk memastikan ini

           
sssccc

Dalam kes ini, anda juga boleh meletakkan kod sebelum teg badan penutup (

    P粉275883973

    Elemen yang anda cuba cari tiada dalamDOM apabila skrip anda dijalankan.

    Lokasi skrip yang bergantung pada DOM boleh memberi kesan yang mendalam pada kelakuannya. Pelayar menghuraikan dokumen HTML dari atas ke bawah. Elemen ditambahkan pada DOM dan skrip (biasanya) dilaksanakan apabila ia ditemui.Ini bermakna pesanan penting.Selalunya, skrip tidak dapat mencari elemen yang muncul kemudian dalam penanda kerana ia belum ditambahkan pada DOM lagi.

    Pertimbangkan penanda berikut; Skrip #1 tidak dapat ditemui

    , manakala Skrip #2 berjaya:

    sssccc
                   
    test div
    sssccc

      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!