我正在努力破译一种方法来删除几个不包含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>
答案 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有一些类似操作的好例子(向下滚动)。