且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

无论如何都删除所有< a href =>在iPad上加载页面后使用javascript标签吗?

更新时间:2023-09-03 17:11:16

您可以使用 document.getElementsByTagName() .所有链接的标签名称为a.您可以通过将其display样式设置为none来直观地删除它们.

You can get all elements by tag name using document.getElementsByTagName(). All links have the tag name a. You can visually remove them by setting their display style to none.

var elements = document.getElementsByTagName('a');
for (var i = 0; i < elements.length; i++) {
    elements[i].style.display = 'none';
}

要删除某个标签内某个标签的元素,只需在所讨论的元素上调用getElementsByTagName()即可.假设您只想隐藏<li>中的所有链接:

To remove elements of a certain tag within a certain tag, just invoke getElementsByTagName() on the element in question. Suppose that you want to hide all links inside a <li> only:

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循环中不能很好地工作.您需要循环向后:

The element.parentNode.removeChild(element) is also a good one, but it doesn't work nicely inside a standard for loop. You need to loop backwards:

var elements = document.getElementsByTagName('a');
for (var i = elements.length; i-- > 0;) {
    var element = elements[i];
    element.parentNode.removeChild(element);
}


根据已阐明的功能要求

更新:您是否想用文本节点表示链接原始内容的替换链接元素?您可以为此使用 Node.replaceChild() .这是一个启动示例:


Update as per the clarified functional requirement: you thus want to replace the link element with a text node representing the link's original content? You can use Node.replaceChild() for this. Here's a kickoff example:

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);
}