簡體   English   中英

JS TypeError:無法讀取null的屬性“樣式”

[英]JS TypeError: Cannot read property 'style' of null

我有這樣的代碼,當它被調用時給我一個“典型錯誤”……有人可以告訴我什么地方錯了,我似乎無法理解這是怎么回事。

document.getElementById('cblberrormsg'+curID).style.display = "block";
var res = ''+ response;
document.getElementById('cblberrormsg'+curID).innerHTML = res;

謝謝。

document.getElementById('cblberrormsg'+curID)返回null 這意味着具有該ID的對象不存在。

最常見的原因是因為您試圖在解析和加載頁面的那一部分之前執行這行代碼為時過早。 您的代碼必須在相關HTML之后的<script>標記中,或者您必須使用等待執行腳本直到頁面加載的函數,例如這樣。

但是,由於在這種情況下,您正在使用變量構造id字符串,因此也可能是curID不是您認為的那樣,或者超出了頁面中的可接受值。

一旦您完全確定要在加載頁面HTML之后才執行此代碼,那么我建議您像這樣對它進行檢測:

console.log("curID=" + curID);
console.log("document.getElementById('cblberrormsg'+curID)=" + document.getElementById('cblberrormsg'+curID);
document.getElementById('cblberrormsg'+curID).style.display = "block";
var res = ''+ response;
document.getElementById('cblberrormsg'+curID).innerHTML = res;

然后,在發生錯誤時查看調試日志,並在發生錯誤時查看curID的值。

jfriend00是正確的,您所引用的對象不存在。

如果文檔尚未加載,或者由於某種原因您未正確設置curID,則每次獲取的代碼都會變得異常繁瑣。

您可以通過稍微更改代碼來進行測試:

var foo = document.getElementById('cblberrormsg'+curID);
if(foo){
    foo.style.display = "block";

    // foo exists 
    // do whatever, yadayadayada
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM