javascript for 循环删除 html 元素和 interval 删除有什么不同?

2017-10-17 09:52:28 +08:00
 TestSmirk

interval 删除 这个是成功删除的.

function removeIds(id) {

    var  num = document.querySelectorAll(id).length;
    var j = setInterval(function () {
        if(num>0){
            num--;
            document.querySelector(id).remove();
        }else {
           clearInterval(j);
        }
    })
}

for 循环删除(这个是失败的)

var classNames = document.getElementsByClassName("classname");
    for(var i=0;i<classNames.length; i++){
        classNames[i].remove();
    }

请问有什么不同吗.为什么 for 删不掉(删掉的是第 0 个).而 interval 却能删掉.

3194 次点击
所在节点    JavaScript
12 条回复
chairuosen
2017-10-17 09:55:37 +08:00
for 循环最后打印 classNames.length 你就知道了
flowfire
2017-10-17 10:09:46 +08:00
var length = classNames.length
for(var i=0;i<length ; i++){
classNames[0].remove();
}
morethansean
2017-10-17 10:11:15 +08:00
楼主操作骚得不知道怎么吐槽 23333 ……你把 setInterval 改成 for 一样能删啊……
做实验要对比,除了对比参数外还有别的变量是怎么回事……一个是 NodeList 一个 HTMLCollection ……
flowfire
2017-10-17 11:22:19 +08:00
@morethansean #3 23333 一波骚操作。这个方法可以用来删除奇数节点
daisyxdx
2017-10-17 12:04:53 +08:00
傻孩子,classNames 的 length 是会变的啊
lianyue
2017-10-17 12:13:18 +08:00
哈哈哈哈
enginex
2017-10-17 12:30:42 +08:00
querySelector 返回 no-live collection
shangfabao
2017-10-17 14:13:59 +08:00
你倒序删除试试?
renminghao
2017-10-17 18:06:09 +08:00
classNames[i--].remove();
SourceMan
2017-10-17 18:13:43 +08:00
说一下:这不能归结于不了解 js
chenyu8674
2017-10-18 09:25:09 +08:00
LZ 是基本功问题,JS 表示这锅我不背
wuzhizhemu569
2017-10-18 13:27:26 +08:00
这个与编程语言无关

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/398210

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX