亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Warum kann jQuery oder getElementById das Element nicht finden?
P粉575055974
P粉575055974 2023-10-15 14:53:18
0
2
938
Was sind die m?glichen Gründe, warum das Element von

document.getElementById、$("#id") oder einer anderen DOM-Methode/jQuery-Selektor nicht gefunden werden kann?

Beispielfragen sind:

  • jQuery kann Ereignishandler stillschweigend nicht binden
  • jQuery ?Getter“-Methode (.val()、>.html()、.text()) 返回 undefined
  • Standard-DOM-Methoden, die null zurückgeben, führen zu folgendem Fehler:

Uncaught TypeError: Die Nulleigenschaft ?...“ kann nicht festgelegt werden

Nicht abgefangener TypeError: Die Eigenschaft kann nicht auf Null gesetzt werden (Einstellung '...')

Nicht erfasster TypeError: Die Eigenschaft ?…“ von null kann nicht gelesen werden

Nicht erfasster TypeError: Eigenschaft von Null kann nicht gelesen werden (lesen Sie ?...“)

Die h?ufigste Form ist:

Uncaught TypeError: Die Eigenschaft ?onclick“ kann nicht auf null gesetzt werden

Nicht erfasster TypeError: Die Eigenschaft ?addEventList ener“ von null kann nicht gelesen werden

Nicht erfasster TypeError: Die Eigenschaft ?style“ von null kann nicht gelesen werden


P粉575055974
P粉575055974

Antworte allen(2)
P粉976737101

簡短:因為您要查找的元素在文檔中尚不存在。


對于這個答案的其余部分,我將使用 例如 getElementById ,但這同樣適用于 getElementsByTagName, querySelector,以及選擇元素的任何其他 DOM 方法。

可能的原因

元素可能不存在的三個原因:

  1. 文檔中確實不存在具有傳遞的 ID 的元素。您應(yīng)該仔細檢查您傳遞給 getElementById 的 ID 是否確實與(生成的)HTML 中現(xiàn)有元素的 ID 匹配,并且您沒有拼寫錯誤該 ID(ID 是區(qū)分大小寫?。?/p>

    如果您使用 getElementById,請確保您提供元素的 ID(例如 document.getElemntById("the-id “))。如果您使用的方法接受 CSS 選擇器(例如 querySelector),請確保在 ID 之前包含 # 以表明您正在查找ID(例如,document.querySelector("#the-id"))。您不能#getElementById一起使用,并且必須將其與querySelector一起使用和類似的。另請注意,如果 ID 中包含在 CSS 標識符(例如 .;包含 . 字符的 id 屬性是不好的做法,但有效),您必須使用 querySelector (document.querySelector("#the\\.id"))) 時轉(zhuǎn)義這些內(nèi)容,但使用 getElementById ( >document.getElementById("the.id"))。

  2. 您調(diào)用 getElementById 時該元素不存在。

  3. 即使您可以在頁面上看到該元素,但該元素并不在您正在查詢的文檔中,因為它位于 iframe 中(這是它自己的文檔)。當您搜索包含 iframe 中的元素的文檔時,不會搜索這些元素。

如果問題是原因 3(位于 iframe 或類似文件中),您需要查看 iframe 中的文檔,而不是父文檔,也許可以通過獲取 iframe 元素并使用其 contentDocument 屬性來訪問其文檔(僅限同源)。本答案的其余部分解決了前兩個原因。

第二個原因——它還沒有出現(xiàn)——很常見。瀏覽器從上到下解析和處理 HTML。這意味著在 DOM 元素出現(xiàn)在 HTML 中之前發(fā)生的對 DOM 元素的任何調(diào)用都將失敗。

考慮以下示例:


div 出現(xiàn)在script之后。執(zhí)行腳本時,該元素尚不存在,并且 getElementById 將返回 null。

jQuery

這同樣適用于所有 jQuery 選擇器。如果您拼寫錯誤您的選擇器,或者您在它們實際存在之前嘗試選擇它們,則 jQuery 不會找到它們。

一個額外的問題是當找不到 jQuery 時,因為您加載了沒有協(xié)議的腳本并且正在從文件系統(tǒng)運行:


此語法用于允許腳本通過 HTTPS 在協(xié)議為 https:// 的頁面上加載,并在協(xié)議為 http:// 的頁面上加載 HTTP 版本

它有一個不幸的副作用,即嘗試加載 file://somecdn.somewhere.com...

但失敗

解決方案

在調(diào)用 getElementById(或任何與此相關(guān)的 DOM 方法)之前,請確保您要訪問的元素存在,即 DOM 已加載。

只需將 JavaScript 放在相應(yīng)的 DOM 元素之后即可確保這一點

在這種情況下,您還可以將代碼放在結(jié)束正文標記 (

P粉275883973

您嘗試查找的元素不在 DOM 當你的腳本運行時。

依賴 DOM 的腳本的位置可能對其行為產(chǎn)生深遠的影響。瀏覽器從上到下解析 HTML 文檔。元素被添加到 DOM 中,并且腳本(通常)在遇到它們時執(zhí)行。 這意味著順序很重要。通常,腳本無法找到標記中稍后出現(xiàn)的元素,因為這些元素尚未添加到 DOM。

考慮以下標記;腳本 #1 找不到

,而腳本 #2 成功:

test div

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage