我有这个可以运行的代码:
a.parentNode.removeChild(a);
我还需要删除这个子元素的前一个兄弟元素,即在它之前的元素。
我该如何更新它?MDN 上有相关的文档吗?
a.parentNode.removeChild(a);
我还需要删除这个子元素的前一个兄弟元素,即在它之前的元素。
我该如何更新它?MDN 上有相关的文档吗?
好的,这里有一个解决方案,考虑到前一个同级节点可能不是元素节点:
var previous = a.previousSibling;
// iterate until we find an element node or there is no previous sibling
while(previous && previous.nodeType !== 1) {
previous = previous.previousSibling;
}
// if there is a sibling, remove it
if(previous) {
previous.parentNode.removeChild(previous);
}
参考:Node.previousSibling
[MDN]
你可以轻松地创建一个函数,该函数将给出前一个元素节点。
我在此重复我的评论:
Element.remove()
的支持已经非常普遍了,所以你可以通过elementVar = elementVar.previousSibling
或elementVar.next(Element)Sibling
进行导航,一旦你的elementVar到达你想要的元素,就使用elementVar.remove()
。也就是说,不再需要获取parentNode
了。 - flenconst node = document.querySelector('.me');
const clone = node.cloneNode(true);
const parentNode = node.parentNode;
parentNode.innerHTML = '';
parentNode.append(clone);
/**
* Removes all sibling elements after specified
* @param {HTMLElement} currentElement
* @private
*/
_removeNextSiblings(currentElement) {
while (!!currentElement.nextElementSibling) {
currentElement.nextElementSibling.remove();
}
}
a.parentNode.removeChild( a.previousSibling );
的翻译是:移除节点a的前一个兄弟节点。 - Šime Vidasa
,所以答案是a.previousSibling
。这告诉我你已经大部分掌握了它。 - Douglas