在HTML中,节点的个数指的是标签、文本的总个数,所以在以下代码中:标签<ul>中,共还有17个节点,但是只有8个标签,但是需要的是标签的背景变色,因此不可以使用【i】作为标签的角标。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>
<input type="button" value="变色" id="btn"/>
<ul id="uu">
<li>爆炒助教</li>
<li>油炸班主任</li>
<li>清蒸小苏</li>
<li>红烧班长</li>
<li>红烧肉</li>
<li>糖醋排骨</li>
<li>凉拌秋葵</li>
<li>鱼香胡萝卜丝</li>
</ul>
<script src="common.js"></script>
<script>
//隔行变色--li
my$("btn").onclick = function () {
var count=0;//记录有多少个li
//获取ul中所有的子节点
var nodes = my$("uu").childNodes;
for (var i = 0; i < nodes.length; i++) {
//判断这个节点是不是li标签
if (nodes[i].nodeType == 1 && nodes[i].nodeName == "LI") {
nodes[i].style.backgroundColor=count%2==0?"red":"yellow";
count++;//8个
//nodes[i].style.backgroundColor = i % 2 == 0 ? "red" : "yellow";
}
}
};
</script>
</body>
</html>
common.js
/**
* 根据id属性的值,返回对应的标签元素
* @param id id属性的值,string类型的
* @returns {Element} 元素对象
*/
function my$(id) {
return document.getElementById(id);
}