如何删除javascript创建的元素,我尝试使用css设置display:none;但这似乎没有解决我的问题,我也无法删除它们,因为我没有HTML,任何其他方式?谢谢
更新:
不能使用任何javascript,例如jquery,mootools,extjs等,我要删除的实际元素是div,指定的类,所以我不能使用getElementById。
我在谷歌上发现了这个脚本,但它似乎没有用,但这就是我需要的:
答案 0 :(得分:1)
使用jQuery执行此操作非常简单。
$("#myId").remove();
将删除
<div id="myId"></div>
编辑:您也可以使用"old school" javascript。
您正在寻找的功能是removeChild()
示例:
function removeElement(divNum) {
var d = document.getElementById('myDiv');
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);
}
答案 1 :(得分:0)
您可能需要更加具体。
一般答案是“使用Javascript”。只要您有通过DOM导航到元素的方法,就可以将其从DOM中删除。
如果你可以使用像jQuery或原型这样的库,那就容易多了,但是你可以用Javascript做些什么。
marcgg假设你知道元素的ID:如果你不知道但是可以在DOM结构中跟踪它,你可以做这样的事情(在原型中 - 不知道jQuery)
var css_selector ='table #fred tr td span.mydata';
$$(CSS).invoke( '删除');
如果你不能使用JS库,你必须自己使用Element.getElementsByTagName()进行DOM导航。
现在您已经指定了一些问题:使用Element.getElementsByTagName,并循环查看它们的className属性。
答案 2 :(得分:0)
您可能需要这样的东西来利用浏览器支持:
if(document.getElementsByClassName){
// Safari 3+ and Firefox 3+
var itms = document.getElementsByClassName('your_class');
for(var i = 0; i<itms.length; i++){
var it = itms[i];
if(it.tagName == "DIV"){
it.parentNode.removeChild(it);
i = i - 1; //It actually gets removed from the array, so we need to drop our count
}
}
} else {
// All other browsers
var itms = document.getElementsByTagName('div');
for(var i = 0; i<itms.length; i++){
var it = itms[i];
// Test that className contains your class
if(/your_class/.test(it.className)) it.parentNode.removeChild(it);
}
}
答案 3 :(得分:0)
JavaScript使用垃圾收集处理所有内存管理,因此一旦对对象的所有引用都不复存在,该对象将由浏览器特定的实现处理。
如果您拥有dom元素:
if(node && node.parentNode){
// return a ref to the removed child
node.parentNode.removeChild(node);
}
答案 4 :(得分:0)
既然你说你不能使用Javascript,你就会陷入困境。你试过这个CSS:
.classname {
display: none !important;
}
创建的元素可能在其上设置了内联样式,在这种情况下,会覆盖普通的CSS。我相信!important
会覆盖内联样式。
当然,最好的解决方案不是首先添加元素......但我猜你在其中一个(不可思议的常见)场景中你无法改变或摆脱JS?
答案 5 :(得分:0)
并非所有浏览器都有 document.getElementsByClassName 方法,但为了您的目的,你可以 把它弄得很好 - 这种方法可以 不像本地人那样工作 HTMLElement.getElementsByClassName-它 返回一个数组,而不是一个实时节点列表。 您可以指定父元素和 标签名称以加快速度。
function getElementsByClass(css, pa, tag){
pa= pa || document.body;
tag= tag || '*';
css= RegExp('\\b'+css+'\\b');
var A= [], elements, L, i= 0, tem;
elements= pa.getElementsByTagName(tag);
L= elements.length;
while(i<L){
tem= elements[i++];
if(css.test(tem.className)) A[A.length]= tem;
}
return A;
}
//测试
var A= getElementsByClass('removeClass'), who;
while(A.length){
who= A.pop(); // remove from the end first, in case nested items also have the class
if(who.parentNode) who.parentNode.removeChild(who);
who= null;
}
如果您已分配事件处理程序 要删除的元素,你应该 在删除之前删除处理程序 元件。
答案 6 :(得分:-2)
使用:
document.removeChild('id_of_element');