开发者问题收集

Javascript 未捕获的类型错误:无法设置未定义的属性

2016-08-11
6237

我的 JavaScript 代码有问题,可能是一些愚蠢的错误,但我找不到它... 发生错误。

Uncaught TypeError: Cannot set property 'innerHTML' of undefined

尽管代码似乎做了它应该做的事情(创建具有 任务 1任务 2任务 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);
      }
   }

 })

});
1个回答
for(var i=1;i<=hmore.length;i++){

JavaScript 中类似数组的对象以零为索引。

长度是对象中的项目数。

这意味着,如果您有一个包含 3 个项目的数组,则它们位于索引 0、1 和 2。

因此,当 i == hmore.length 时,您已经 超出末尾一个

您需要测试 < 而不是 <=

Quentin
2016-08-11