国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Warum k?nnen jQuery- oder DOM-Methoden wie getElementById keine Elemente finden?
P粉720716934
P粉720716934 2023-10-15 15:40:06
0
2
836
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 ?addEventListener“ von null kann nicht gelesen werden

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


P粉720716934
P粉720716934

Antworte allen(2)
P粉938936304

簡(jiǎn)短:因?yàn)槟檎业脑卦谖臋n中尚不存在。


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

可能的原因

元素可能不存在的三個(gè)原因:

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

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

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

  3. 即使您可以在頁(yè)面上看到該元素,但該元素并不在您正在查詢的文檔中,因?yàn)樗挥?iframe 中(這是它自己的文檔)。當(dāng)您搜索包含 iframe 中的元素的文檔時(shí),不會(huì)搜索這些元素。

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

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

考慮以下示例:


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

jQuery

這同樣適用于所有 jQuery 選擇器。如果您拼寫(xiě)錯(cuò)誤您的選擇器,或者您在它們實(shí)際存在之前嘗試選擇它們,則 jQuery 不會(huì)找到它們。

一個(gè)額外的問(wèn)題是當(dāng)找不到 jQuery 時(shí),因?yàn)槟虞d了沒(méi)有協(xié)議的腳本并且正在從文件系統(tǒng)運(yùn)行:


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

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

但失敗

解決方案

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

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

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

P粉122932466

您嘗試查找的元素不在 DOM 當(dāng)你的腳本運(yùn)行時(shí)。

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

考慮以下標(biāo)記;腳本 #1 找不到

,而腳本 #2 成功:

test div

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