javascript - 请教一下element.children兼容的小问题...望诸君不吝赐教!
PHPz
PHPz 2017-04-10 16:05:03
[JavaScript讨论组]

一.问题:
如何实现浏览器兼容版的element.children
element.children能够获取元素的元素子节点,但是低版本的ie不支持,如何在低版本的ie上兼容类似的功能。

二.我的思路:
⑴写一个函数getElementChild(element),传入一个父节点element.
⑵判断DOM中element对象的children属性是否存在,存在则直接返回element.children,不存在则执行兼容代码.
⑶兼容代码思路:
①创建一个数组elementArr以便返回最终 [符合要求] 的子节点集合。
②调用element对象的childNodes属性,以获取其子节点集合。
③遍历子节点集合,对每一个子节点进行判断,如果节点类型为1(即节点类型为元素节点),则添加到elementArr返回数组中。
④返回数组elementArr

三.代码如下:
JS部分:

HTML部分代码:


大风起兮云飞扬,威加海内兮归故乡。

四.问题:
1.通过element.childNodes属性应该获得了子节点的集合了nodeList了吧...按理说应该可以通过nodeList.length来获得子节点个数了,w3c上如下所述:

不过chrome控制台上却显示:

这里诚挚的请教诸君,还望不吝赐教,多谢.
如果您有更好的代码或想法思路,希望也能分享出来,小子洗耳恭听~

PHPz
PHPz

学习是最好的投资!

全部回复(3)
天蓬老师

Chrome 的意思是,nodeListundefined

打个断点看看你那个 case 里的 element 是什么。我猜 element 并不是个元素节点,于是也就没有 childNodes

天蓬老师

getElementsByTagName返回带有指定标签名的对象集合,返回的是数组
element.childNodes中element是一个对象
方法一:

取getElementsByTagName返回数组的第一个元素作为参数传入

方法二:

用getElementById函数取代getElementsByTagName
getElementById返回对拥有指定ID的第一个对象的引用,返回的是一个对象
大家讲道理

哈哈,题主太马虎了哈,问题出错在

var x = document.getElementsByTagName('p');

应该是

var x = document.getElementsByTagName('p')[0];

所以你之前传进去的是一个nodelist,nodelist没有childNodes

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号