下面是我写的代码,总是提示我
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
是作用在文档节点对象上的。