2016-08-11 4 views
0

Ich habe ein Problem mit meinem Code in JavaScript, wahrscheinlich einige dumme Fehler, aber ich kann es nicht finden ... ein Fehler auftritt.Javascript Uncaught TypeError: Kann nicht die Eigenschaft von undefined

Uncaught TypeError: Cannot set property 'innerHTML' of undefined

Auch wenn der Code zu tun, was scheint es soll (Aufgaben erstellt, die einen Header von Task 1 haben, Task 2, Task 3 usw.) .. Wie kann ich das Problem lösen? Vielleicht gibt es eine kürzere Möglichkeit, meinen Aufgaben nummerierte Header zu geben?

document.addEventListener("DOMContentLoaded", function(){ 

    var add=document.querySelector("#addTaskButton"); 
    var tasklist=document.querySelector("#taskList"); 
    var clickcount=0; 

    add.addEventListener("click",function(event){ 
    var newTask=document.createElement("li"); 
    tasklist.appendChild(newTask); 
    var newh1=document.createElement("h1"); 
    newTask.appendChild(newh1); 

    clickcount+=1; 
    if(clickcount==1){ 
    var h1=document.querySelector("h1"); 
    h1.innerText="Task 1"; 
    }else if(clickcount>1){ 
    var hmore=document.getElementsByTagName("h1"); 
    for(var i=1;i<=hmore.length;i++){ 
     hmore[i].innerHTML="Task "+(i+1); 
     } 
    } 

}) 

}); 
+3

ich es sein sollte denken, prüfen, 'for (var i = 0; i

Antwort

2
for(var i=1;i<=hmore.length;i++){ 

Array-ähnliche Objekte in JavaScript sind Null indiziert.

Die Länge ist die Anzahl der Objekte im Objekt.

Dies bedeutet, dass wenn Sie einen Array mit 3 Elementen darin haben, sie existieren bei Indizes 0, 1 und 2.

Also, wenn i == hmore.length Sie eine über das Ende gegangen.

Sie müssen sich für < nicht <=

+0

https://jsfiddle.net/880ax09m/1/ – lordkain

Verwandte Themen