Javascript显示“无法将属性'innerHTML'设置为null”

时间:2018-10-14 16:06:04

标签: javascript html

我试图运行以下显示空白屏幕的代码

function make() {
    for (var i = 1; i <= 8; i++) {
        var j = "d" + i;
        var c = document.createElement("div");
        c.setAttribute("id",j);
        document.getElementById(j).innerHTML = 'Hello<br>';
    }
}
#d1 {font-family: 'Cinzel';}
#d2 {font-family: 'Cookie';}
#d3 {font-family: 'Great Vibes';}
#d4 {font-family: 'Monoton';}
#d5 {font-family: 'Orbitron';}
#d6 {font-family: 'Pacifico';}
#d7 {font-family: 'Righteous';}
#d8 {font-family: 'Sacramento';}
<!DOCTYPE html>
<html>
<head>
<title>Logo</title>
<link href="https://fonts.googleapis.com/css?family=Cinzel|Cookie|Great+Vibes|Monoton|Orbitron|Pacifico|Righteous|Sacramento" rel="stylesheet">
</head>
<body onload="make()">
</body>
</html>

在上面的代码段中,我使用了javascript函数,其中我创建了8个元素,并用换行符分隔每个元素。但是,不幸的是,包含“ innerHTML”的行引发类型错误,其余代码未生成所需的输出。
请帮帮我吧!
谢谢

2 个答案:

答案 0 :(得分:3)

您错过了这一非常重要的行document.body.appendChild(c);

  

您必须使用将元素插入文档树   appendChildinsertBefore,因为必须插入元素   尝试通过document.getElementById(j)

进入DOM之前

<!DOCTYPE html>
<html>

<head>
  <title>Logo</title>
  <link href="https://fonts.googleapis.com/css?family=Cinzel|Cookie|Great+Vibes|Monoton|Orbitron|Pacifico|Righteous|Sacramento" rel="stylesheet">
  <style type="text/css">
    #d1 {
      font-family: 'Cinzel';
    }
    
    #d2 {
      font-family: 'Cookie';
    }
    
    #d3 {
      font-family: 'Great Vibes';
    }
    
    #d4 {
      font-family: 'Monoton';
    }
    
    #d5 {
      font-family: 'Orbitron';
    }
    
    #d6 {
      font-family: 'Pacifico';
    }
    
    #d7 {
      font-family: 'Righteous';
    }
    
    #d8 {
      font-family: 'Sacramento';
    }
  </style>
</head>

<body onload="make()">
  <script type="text/javascript">
    function make() {
      for (var i = 1; i <= 8; i++) {
        var j = "d" + i;
        var c = document.createElement("div");
        c.setAttribute("id", j);
        document.body.appendChild(c);
        document.getElementById(j).innerHTML = 'Hello<br>';
      }
    }
  </script>
</body>

</html>

答案 1 :(得分:0)

代替那一行:

document.getElementById(j).innerHTML = 'Hello<br>';

尝试一下:

c.textContent = 'Hello';

作为注释和答案-您应该使用带有appendChild(c)的appendChild将该元素插入文档树中。