Javascript:在对象文字函数中定义的事件侦听器使代码死亡
Javascript : Event listener defined inside function of object literal making the code dead
我创建了以下代码http://jsfiddle.net/N65yS/41/..
我的问题是这个..当我单击"绘图"按钮时,它第一次工作。成功单击按钮不会呼叫侦听器。为什么会这样...事件侦听器和对象文字是否有任何问题。为什么会发生这种奇怪的行为?
我已经给出了适当的评论和一些有用的警报消息(请不要对警报消息投反对票:P)。
在此行
document.body.innerHTML += elm;
您正在向文档添加另一个元素。然而!这条线的作用是
document.body.innerHTML = document.body.innerHTML + elm;
浏览器获取文档的整个 HTML 标记,并向其中添加elm
标记。然后,当您分配给 document.body.innerHTML
时,浏览器会从文档中删除所有元素,然后解析表达式document.body.innerHTML + elm
,并再次将其中的所有元素添加到文档中。
这意味着不仅会添加新元素elm
,还会首先删除文档正文中的所有其他元素,然后再次将其新实例添加到文档中。在此过程中,所有事件侦听器都将丢失!事实上,在旧的IE中,这些分离的事件侦听器甚至会导致内存泄漏。
相关文章:
- 如何在for循环中添加事件侦听器
- 未命中服务器发送的事件侦听器
- 如何覆盖原型中的事件侦听器
- 无法将事件侦听器附加到画布
- 如何在d3.js中自定义事件侦听器
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- 事件侦听器未在chrome扩展中的options.js中启动
- IE8更改文本区域上的事件侦听器不工作
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- javascript删除事件侦听器
- 我应该/如何清除mousemove JQuery事件侦听器
- 在JQuery中使用谷歌地图Api事件/侦听器
- 如何使用我的Jquery代码创建委托事件侦听器
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 为什么此事件侦听器不工作
- 仅当类存在于Javascript中时才允许侦听器事件运行
- 不确定Google Maps的侦听器事件中值为何未定义
- 如何向控件添加侦听器事件
- 无法在地图单击侦听器事件上显示另一个地图
- Chrome运行时OnMessage侦听器事件未启动