我的JavaScript代码存在问题,可能是一些愚蠢的错误,但我无法找到它......发生错误。
未捕获的TypeError:无法设置属性' innerHTML'未定义的
即使代码似乎做了它应该做的事情(创建标题为Task 1
,Task 2
,Task 3
等的任务)..我该如何解决这个问题?也许有一种更短的方式来为我的任务编号标题?
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);
}
}
})
});
答案 0 :(得分:2)
for(var i=1;i<=hmore.length;i++){
JavaScript中的类似数组的对象是零索引的。
长度是对象中的项目数。
这意味着如果你有一个包含3个项目的数组,它们就存在于索引0,1和2中。
所以当i == hmore.length
你已经一个超越结束时。
您需要测试<
而不是<=