javascript - getElemensByTagName获取到的值每次都是重新计算的?
伊谢尔伦
伊谢尔伦 2017-04-10 17:55:28
[JavaScript讨论组]

我在做一个小功能,给一个按钮绑定click事件,每次点击后生成一个li元素,然后把li元素插入到ul的第一个位置,里面用到了getElementsByTagName方法,发现每次执行click事件时,取到的li集合的都是最新的,这是为什么?

window.onload = function() {
    var count = 0;
    var ul = document.getElementById("list");
    var lis = document.getElementsByTagName("li"); //取到的li实在click事件之前就已经确定的
    document.getElementById("btnAdd").onclick = function() {
        var li = document.createElement("li");
        li.innerText = count++;
        ul.insertBefore(li, lis[0]);//每次执行时lis的元素个数都会增加
    };
};
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
黄舟

使用getElementsByTagName取得的是一个NodeList,并非普通的数组。
NodeList有个特性就是它永远是动态的,在你访问它时,每次都要重新遍历一遍文档。
所以,有时候你应该把你想取得的节点缓存起来,这样可以提升性能,也可以避免一些不必要的麻烦。

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

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