Javascript 创建可以自行删除的元素?
我正在构建一个灯箱作为一个学校项目,我不能使用jQuery。我有一张照片。当您单击它时,Javascript生成一个ID为“overlay”的透明div。我希望div删除它自己,或者父级删除它,但它不起作用。我认为这与您无法将“onclick”链接到尚不存在的元素有关。不要在标记中使用Javascript 创建可以自行删除的元素?,javascript,onclick,lightbox,removechild,Javascript,Onclick,Lightbox,Removechild,我正在构建一个灯箱作为一个学校项目,我不能使用jQuery。我有一张照片。当您单击它时,Javascript生成一个ID为“overlay”的透明div。我希望div删除它自己,或者父级删除它,但它不起作用。我认为这与您无法将“onclick”链接到尚不存在的元素有关。不要在标记中使用onclick处理程序,请使用Javascripts事件函数,例如将事件动态添加到元素中。您还应该确保在删除元素时正确地清理了所有引用(换句话说,注销事件处理程序)。您必须从父元素中删除元素。大概是这样的: d =
onclick
处理程序,请使用Javascripts事件函数,例如将事件动态添加到元素中。您还应该确保在删除元素时正确地清理了所有引用(换句话说,注销事件处理程序)。您必须从父元素中删除元素。大概是这样的:
d = document.getElementById('overlay');
d.parentNode.removeChild(d);
image.onclick = function(){ *create overlay*};
overlay.oncklick = function() {*overlay.parentNode.removeChild(overlay)*};
或者你可以把它藏起来:
d.style.display = 'none';
而且,哦:您可以通过将函数分配给onclick属性,将Javascript代码添加到(新创建的)元素中
d = document.createElement('div');
d.onclick = function(e) { this.parentNode.removeChild(this) };
我明白了:)
我像巴特·萨德那样做,但没用。我的代码如下所示:
d = document.getElementById('overlay');
d.parentNode.removeChild(d);
image.onclick = function(){ *create overlay*};
overlay.oncklick = function() {*overlay.parentNode.removeChild(overlay)*};
浏览器就像wtf?因为它读取代码并认为“我无法检查用户是否单击了不存在的元素。”
所以我这样做了:
image.onclick = function(){
*create overlay*
overlay.onclick = function() {*remove overlay*};
};
您可以按如下方式删除该元素
var el = document.getElementById('div-02');
el.remove(); // Removes the div with the 'div-02' id
有关详细信息,请参见没错,您不能。因此,在将钩子附加到身体后设置钩子。此外,您的问题还可以从一些代码和示例中受益,这些代码和示例说明了您尝试过的内容以及出现的问题。请发布您当前的HTML输出和用于创建覆盖的脚本。如果您希望根据经过的时间自动删除它(如果可行),我们可以添加一个
setTimeout
,或者我们可以向父元素添加一个事件来删除它。不过,使用相关代码会更容易。