更新时间: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);
}