我知道在使用UIWebView(我正在使用的)在iPad上加载页面后,我可以运行一行javascript代码,但我不知道我可以输入什么来删除所有标签。我还希望能够仅对页面的某些部分执行此操作,例如只删除某个标记内的标记。
答案 0 :(得分:8)
您可以使用document.getElementsByTagName()
按标记名称获取所有元素。所有链接都标记为a
。您可以通过将display
样式设置为none
来直观地删除它们。
var elements = document.getElementsByTagName('a');
for (var i = 0; i < elements.length; i++) {
elements[i].style.display = 'none';
}
要删除某个标记内某个标记的元素,只需在相关元素上调用getElementsByTagName()
即可。假设您只想隐藏<li>
内的所有链接:
var listitems = document.getElementsByTagName('li');
for (var i = 0; i < listitems.length; i++) {
var anchors = listitems[i].getElementsByTagName('a');
for (var j = 0; j < anchors.length; j++) {
anchors[j].style.display = 'none';
}
}
element.parentNode.removeChild(element)
也很好,但它在标准for
循环中不能很好地工作。您需要循环向后:
var elements = document.getElementsByTagName('a');
for (var i = elements.length; i-- > 0;) {
var element = elements[i];
element.parentNode.removeChild(element);
}
更新:您是否希望用表示链接原始内容的文本节点替换链接元素?您可以使用Node.replaceChild()
。这是一个启动示例:
var elements = document.getElementsByTagName('a');
for (var i = elements.length; i-- > 0;) {
var element = elements[i];
var text = document.createTextNode(element.firstChild.nodeValue);
element.parentNode.replaceChild(text, element);
}
答案 1 :(得分:0)
以为我会发布一个remove()函数来补充BalusC:
function remove(el){
if(el.parentNode)el.parentNode.removeChild(el);
}
注意:如果元素没有父元素,则表示它不在DOM树中。 这也意味着它将在下一次运行的GC(垃圾收集器)中被删除(只要没有对它的引用)。
答案 2 :(得分:0)
如果你要进行大量的dom操作,那么包含jQuery来抓取你的元素可能是值得的。删除项目会更容易一些。例如
$(function(){
$('.surrounding_class a').remove();
});
答案 3 :(得分:0)
如果您想删除链接但保留其显示内容(文本,图片等),您可以在链接前插入childNodes
,然后删除链接元素:
var removeLinks = function(context) {
var undefined;
if(context === undefined) {
context = document;
}
if(!context) {
return false;
}
var links = context.getElementsByTagName('a'), i, link, children, j, parent;
for(i = 0; i < links.length; i++) {
link = links[i];
parent = link.parentNode;
if(!link.href) {
continue;
}
children = link.childNodes;
for(j = 0; j < children.length; j++) {
parent.insertBefore(children[j], link);
}
parent.removeChild(link);
}
return context;
};
// Use:
removeLinks(document.getElementById('container'));