簡體   English   中英

Uncaught TypeError:無法在JS創建的div上將屬性'innerHTML'設置為null

[英]Uncaught TypeError: Cannot set property 'innerHTML' of null on JS created div

我遇到此錯誤: Uncaught TypeError: Cannot set property 'innerHTML' of null

給出此錯誤的代碼是這樣的:

  $(document).ready(function() { load(); loadMoney(); for (var i = 0; i < localStorage.length; i++){ var rawItem = localStorage.getItem(localStorage.key(i)); var item = JSON.parse(rawItem); if(item instanceof Array){ var countdownId = setInterval(function(){ var diff = Math.floor((+new Date() - item[0])/1000) if(item[1] < diff){ document.getElementById(item[2]).innerHTML = item[3]; localStorage.removeItem(localStorage.key(i)); clearInterval(countdownId); }else{ document.getElementById(item[2]).innerHTML = item[3] + " Time left: " + calculateTime(item[1]-diff); } },1000); } } 

這與我已經進行了字符串化的localStorage中的數組有關,這是這樣的:

[1414879430956,2000,“ 0id”,“ CountDown”]

id來自這里,這可能是為什么它給我錯誤的原因:

function createBus(bus){
            var element = document.body.appendChild(document.createElement("div"));
            element.className = "bus";
            element.style.left = bus.x+"px";
            element.style.top = bus.y+"px";
            var title = element.appendChild(document.createElement("div"));
            title.innerHTML = bus.name;
            var button = element.appendChild(document.createElement("button"));
            button.id = bus.id*2 + "id";
            button.innerHTML = "Ok, send off ";
            button.onclick = function(){
                startCountDown(bus.time, button.id, bus.name);
            }
            button.className = "pure-button";
            var icon = button.appendChild(document.createElement("i"));
            icon.className = "fa fa-bus"
            return element;
        }

我懷疑這是在函數運行之前未創建的div中的錯誤,因為如果我運行

document.getElementById("0id").innerHTML = ...

然后就可以了。

提前致謝 :)

這確實是一條評論,但我想要一些用於格式化的空間。 當您執行以下操作時:

document.getElementById(item[2]).innerHTML = item[3];

您希望getElementById返回一個節點,因為如果不返回,則結果是一定的錯誤。 一個更可靠的模式是:

var node = document.getElementById(item[2]);

if (node) {
  node.innerHTML = item[3];

} else {
  // deal with node not being present
}

或類似。

暫無
暫無

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

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