javascript - js创建两个对象,removeChild报错但是还是删掉了?
迷茫
迷茫 2017-04-11 12:38:26
[JavaScript讨论组]
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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
PHP中文网

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

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

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

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

只是猜测

阿神

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

PHPz

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

你确定??

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

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

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

迷茫

因为你用的是for循环

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

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