想象一下:我知道有时会创建一个id="cats"
的元素,但我不知道什么时候。
我可以删除已经存在的元素:
document.getElementById('cats').style.display = 'none';
但有没有办法阻止该元素在它存在之前,所以它永远不会被创建?或者在创建后立即检测并删除它? (纯JavaScript答案有优势)
重要说明:我无法编辑CSS
答案 0 :(得分:5)
为什么不简单地将它隐藏在你的css中,而不是阻止正在创建的元素?
#cats { display:none }
答案 1 :(得分:0)
如果您想要一个仅限javascript的解决方案,您可以做两件事:
找到一种观察DOM操作的方法。这不是通过浏览器轻松完成的。这里有一篇关于它的帖子:Detect changes in the DOM
每隔一秒(或左右)运行间隔并检查ID ,然后可以在创建后快速删除。请记住,这是一个很大的开销。
(function() {
window.setInterval(function() {
var elem = document.getElementById('cats');
if (elem) {
elem.parentNode.removeChild(elem);
}
}, 1000)
}());
(function () {
button = document.getElementById('creator');
button.addEventListener('click', function () {
var element = document.createElement('div');
element.id = 'cats'
document.body.appendChild(element);
})
}());
#cats {
background: red;
width: 100px;
height: 100px;
}
<button id="creator">Create Element</button>
通常你应该能够控制操纵DOM的人或者什么,从而能够首先避免创建。
答案 2 :(得分:0)
组合Hugos显示:none; -solution,检查id是否已被使用(如果是,请将其从DOM中删除)当您要引入具有该ID的元素时。 css规则不会阻止在DOM中创建具有该id的元素,因此在开始行动之前仍有可能创建具有此id的元素。