当第一段代码插入第二段之前时,Javascript代码不起作用

时间:2017-11-06 07:15:35

标签: javascript html

当第一段代码

时,Javascript代码无效
var parag = document.getElementsByTagName("p");
for (var i = 0; i <= parag.length; i++) {
parag[i].innerHTML = parag[i].innerHTML + parag[i].tagName.toLowerCase();
}

在第二件之前插入。

var ul = document.getElementById("ul");
var li = document.getElementById("li");
var newli = document.createElement("li");
newli.innerHTML = "newli";
ul.insertBefore(newli, li);

在第一段代码之后,所有代码都不起作用,但如果我在有问题的代码之前插入它,则有效。

<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <p>10</p>
  <p>10</p>
  <ul id = "ul">
    <li id = "li">li</li>
  </ul>
  <script>
  var parag = document.getElementsByTagName("p");
  for (var i = 0; i <= parag.length; i++) {
    parag[i].innerHTML = parag[i].innerHTML + parag[i].tagName.toLowerCase();
  }

  var ul = document.getElementById("ul");
  var li = document.getElementById("li");
  var newli = document.createElement("li");
  newli.innerHTML = "newli";
  ul.insertBefore(newli, li);
  </script>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您好,因为您正在使用<=作为数组长度并且您走出了数组,因此您应该使用< for for循环,

for (var i = 0; i <= parag.length; i++) {//wrong usage

for (var i = 0; i < parag.length; i++) {//correct usage

答案 1 :(得分:0)

试试这个i < parag.length代替i <= parag.length

<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <p>10</p>
  <p>10</p>
  <ul id = "ul">
    <li id = "li">li</li>
  </ul>
  <script>
  var parag = document.getElementsByTagName("p");
  for (var i = 0; i < parag.length; i++) {
    parag[i].innerHTML = parag[i].innerHTML + parag[i].tagName.toLowerCase();
  }

  var ul = document.getElementById("ul");
  var li = document.getElementById("li");
  var newli = document.createElement("li");
  newli.innerHTML = "newli";
  ul.insertBefore(newli, li);
  </script>
</body>
</html>