我正在构建一个灯箱作为学校项目,但我不能使用 jQuery。我有一个图像。当你点击它时,Javascript 会创建一个 ID 为“overlay”的透明 div。我希望 div 自行删除,或者父级删除它,但它不起作用。我认为这与您无法将“onclick”链接到尚不存在的元素这一事实有关。
问问题
30453 次
4 回答
32
您必须从父元素中删除元素。像这样的东西:
d = document.getElementById('overlay');
d.parentNode.removeChild(d);
或者你可以隐藏它:
d.style.display = 'none';
而且,哦:您可以通过将函数分配给 onclick 属性来将 Javascript 代码添加到(新创建的)元素。
d = document.createElement('div');
d.onclick = function(e) { this.parentNode.removeChild(this) };
于 2013-03-27T01:09:37.093 回答
6
您可以像下面这样删除元素
var el = document.getElementById('div-02');
el.remove(); // Removes the div with the 'div-02' id
点击这里了解更多详情
于 2018-07-09T07:15:30.153 回答
1
不要onclick
在标签中使用处理程序,使用 Javascripts 事件函数,例如addEventListener
将事件动态添加到元素中。您还应该确保在删除元素时正确清除所有引用(换句话说,取消注册事件处理程序)。
于 2013-03-27T00:53:52.970 回答
0
我明白了 :) 我像巴特一样伤心,但它没有用。我的代码看起来像这样:
image.onclick = function(){ *create overlay*};
overlay.oncklick = function() {*overlay.parentNode.removeChild(overlay)*};
浏览器就像wtf?导致它读取代码并认为“我无法检查用户是否单击了不存在的元素。” 所以我这样做了:
image.onclick = function(){
*create overlay*
overlay.onclick = function() {*remove overlay*};
};
于 2013-03-27T11:07:31.130 回答