首页 > JS getElementsByTagName报错,求大神帮看看..

JS getElementsByTagName报错,求大神帮看看..

下面是我写的代码,总是提示我

Uncaught TypeError: oul1.getElementsByTagName is not a function

求大神帮看看我是哪里用错了,应该怎么解决这个问题呀,谢谢哈;

<!doctype html>
<html>

<head>
  <meta charset="utf-8" />
  <tilte></tilte>
  <script>
    window.onload = function() {
      var oinpu = document.getElementById('odin');
      var odiv1 = document.getElementById('odiv_1');
      var oul1 = odiv1.getElementsByTagName('ul');
      oinpu.onclick = function() {
        var oli1 = document.createElement('li');
        var oli2 = oul1.getElementsByTagName('li');//这句话总是报错,
        //odiv1.appendChild(oli1);
        if (oli2.length > 0) {
          oul1.insertBefore(oli1, oli2[0]);
        } else {
          odiv1.appendChild(oli1);
        }
      }
    }

  </script>
</head>

<body>
  <input type="button" value="添加" id="odin" />
  <div id="odiv_1">
    <ul></ul>
  </div>
</body>

</html>

跟你采纳的答案一样,因为返回的是数组,把第12行改成;

var oul1 = odiv1.getElementsByTagName('ul')[0];

就可以了,另外遇到这个问题,把你获取的变量打印出来看,很快就可以排查到错误。


js没有链式操作,它的库jq有,odiv1.getElementsByTagName('ul')这句明显的想搞链式操作,当然不对,你把odiv1换为document试试


oul1[0].getElementsByTagName('li');getElementsByTagName返回的是数组(NodeList)。


odiv1是元素节点对象数组, getElementsByTagName是作用在文档节点对象上的。

【热门文章】
【热门文章】