2010-10-14 56 views
3

我很努力去破译一种方法来删除几个不包含ID的特定href元素,并且是没有ID的单个父母的孩子。javascript - 删除没有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其中“=媒体”存在内的四个特定的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> 

回答

1

您不需要ID去除元素。你只需要引用元素(你似乎有)。

,而不是这样的:

alert(xx[i]); 

试试这个:

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

太棒了!我已经接近一两次了,但是还没有到达终点。 – Adam 2010-10-15 17:21:53

+0

我很高兴你能工作。不要忘记使用Andy E在您的正则表达式测试中使用href属性的建议。 – 2010-10-15 18:06:22

1

您可以拨打removeChild()父元素,像这样:

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

作为一个侧面说明,你的正则表达式不在正在执行的页面上执行roperty。改变你的if语句:

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

好点 - 我已经相应更新。此外,似乎在执行“如果”是有问题的 - 我已切换到“时”,并得到我期待的结果。 – Adam 2010-10-15 17:24:16

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

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

+0

* removeNode()*是一种专有方法,并未在所有浏览器中实现。坚持* removeChild()*。 – 2010-10-14 21:53:39

+0

@安迪 - 是的,只是看起来并确认。编辑我的答案。 – 2010-10-14 21:55:43