下面是我写的代码,总是提示我
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 op1 = document.getElementById('op_1');
var oul1 = op1.getElementsByTagName('ul');
oinpu.onclick = function() {
var oli1 = document.createElement('li');
var oli2 = oul1.getElementsByTagName('li');//这句话总是报错,
//op1.appendChild(oli1);
if (oli2.length > 0) {
oul1.insertBefore(oli1, oli2[0]);
} else {
op1.appendChild(oli1);
}
}
}
</script>
</head>
<body>
<input type="button" value="添加" id="odin" />
<p id="op_1">
<ul></ul>
</p>
</body>
</html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
oul1[0].getElementsByTagName('li');getElementsByTagName返回的是数组(NodeList)。
op1是元素节点对象数组,getElementsByTagName是作用在文档节点对象上的。js没有链式操作,它的库jq有,op1.getElementsByTagName('ul')这句明显的想搞链式操作,当然不对,你把op1换为document试试
跟你采纳的答案一样,因为返回的是数组,把第12行改成;
就可以了,另外遇到这个问题,把你获取的变量打印出来看,很快就可以排查到错误。