首页 > js创建两个对象,removeChild报错但是还是删掉了?

js创建两个对象,removeChild报错但是还是删掉了?

var Box=function(){}
Box.prototype={
    close:function(){
        removeChild.....
    }
}
var a=new Box();
var b=new Box();

效果是都可以删掉,但是只有最后一个不报错,前面都会报错,不知道为啥

js.js:30 Uncaught TypeError: Cannot read property 'removeChild' of null


因为你用的是for循环


会不会是多次触发事件的原因?

var a=new Box();
调用了一次addListener
var b=new Box();
又调用了一次

这样是不是就会调用两次事件处理?
第一次remove成功,第二次就失败了

如果是的话,也就验证了为什么最后一个没有报错,因为每次new Box()都会将已经存在的closeBtn添加一个Lsitener,前面的都有多个Listener,最后一个只有一个Listener

只是猜测


把for那段的内容(不包括for语句本身)放一封闭环境内运行,试试行不行


你说的都可以删掉,是指:
点击 按钮1 , 然后 显示的效果是:按钮1 被删除了(你移除的是btn 的 父元素 , 连btn的父元素都移除了 ,btn 自然就消失了,所以效果看起来就是 , 按钮被移除了)??
点击按钮2 , 同样,
....
点击最后一个按钮,也是一样的效果??

你确定??

如果是,那 你被你所看到的效果蒙骗了。

如果错误信息是 除了 最后一个按钮 点一下,出现按钮被移除,且没报错。 那问题就是 你的 html 结构布局有问题。

你仔细检查 每个定义事件的btn 是否都有父元素 , 且btn的父元素 也有父元素。 根据你的错误信息,除了最后一个满足这个要求之外,其他按钮 ,都不满足....

【热门文章】
【热门文章】