乍一看 感觉一样 平时用的时候也没怎么留意
其实区别还是有点儿大
传言啊 这个 childNodes是正统属性 亲生的
而这个children是野孩子
这个野孩子比较随意 所以用它返回来的就只有DOM元素了 其他的文字啥的 都不返回
而 childNodes比较讲究 事无巨细 都要返回来
但是我还是觉得野孩子乖 洒脱啊 所以也获得了几乎所有浏览器的支持 如果你想要DOM节点 直接用野孩子就可以了
感觉有点儿偏心啊
为啥偏心呢?
这个亲生娃儿childNodes心太细了 啥都给你返回来了
下面我们就举个例子
首先是野孩子的结果
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="father"><div>01</div><div>02</div><div>03</div></div>
<script type="text/javascript">
console.log(document.getElementById("father").children);
</script>
</body>
</html>
上面的结果只返回三个div 数组长度是3 换成childNodes也一样 因为没有文本元素啊
但是别着急 换种写法 问题就出来了
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="father"> <div>01</div><div>02</div><div>03</div></div>
<script type="text/javascript">
console.log(document.getElementById("father").children);
</script>
</body>
</html>
不知道 有没有看出来上面两端代码的区别 我在那个father后面加了个空格 结果呢
childNodes就返回来了四个长度的数组 ....好吧 很乖
还有更奇葩的
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="father">
<div>01</div><div>02</div><div>03</div></div>
<script type="text/javascript">
console.log(document.getElementById("father").childNodes);
</script>
</body>
</html>
不知道各位看出区别来了没有
我加了个换行符
结果又给我返回来了四个长度的数组 妈呀 换行也算啊
如果你说我就想用亲儿子 但是呢 又不想让他返回换行元素 就只能按照下面这么来写
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="father"
><div>01</div
><div>02</div
><div>03</div
></div>
<script type="text/javascript">
console.log(document.getElementById("father").childNodes);
</script>
</body>
</html>
好吧 这还是我认识的DOM吗
算了 还是要私生子好了