javascript - 删除没有ID和特定内容的元素/节点

时间:2010-10-14 21:41:51

标签: javascript element

我正在努力破译一种方法来删除几个不包含ID的特定href元素,并且是没有ID的个别父母的孩子。

我能管理的最好的方法是通过URL本身中的特定单词识别8个或9个href标签中的四个(并且数量可能不同)。为此,我执行以下操作:

<script language=javascript>
var xx = document.getElementById('theID').getElementsByTagName('a');
var ptn=/\=media/;
for(var i=0; i<xx.length; i++) {
    if(ptn.exec(xx[i])){
    alert(xx[i]);
    }
}
</script>

当然,所有这些都给了我href中存在“= media”的四个特定URL。现在,不知何故,我需要能够删除这些href元素或它们的父元素(恰好是无序列表标记)。直到我获得更高级别(表格单元格)才能获得对元素ID的访问权限,或者除了URL本身中的特定单词之外的任何区别。

我现在对任何方法持开放态度 - PHP可能是一个选项(我还没有探讨过这个),但为此,javascript是我的第一个合理选择。我无法篡改直接生成链接的页面,只能在页面加载时包含辅助页面。

关于如何解决这个问题的任何指针??

========================最终解决方案=====================

<script language=javascript>
var xx = document.getElementById('theID').getElementsByTagName('a');
var ptn=/\=media/;
for(var i=0; i<xx.length; i++) {
    while(ptn.exec(xx[i].href)){
        alert(xx[i]);
        xx[i].parentNode.removeChild(xx[i]);
    }
}
</script>

3 个答案:

答案 0 :(得分:1)

您不需要ID来删除元素。您只需要对元素的引用(您似乎有)。

而不是:

alert(xx[i]);

试试这个:

XX[i].parentElement.removeChild(xx[i]);

答案 1 :(得分:1)

您可以在父元素上调用removeChild(),如下所示:

xx[i].parentNode.removeChild(xx[i]);

作为旁注,您的正则表达式未在 href 属性上执行。将您的if语句更改为:

if(ptn.exec(xx[i].href)){

答案 2 :(得分:0)

var parent = xx[i].parentNode;
parent.removeChild(xx[i]);

http://www.onlinetools.org/articles/unobtrusivejavascript/chapter2.html有一些类似操作的好例子(向下滚动)。