如何删除将其子节点保留在javascript中的子节点?
我的javascript不太好。 我有这样一个DOM结构:如何删除将其子节点保留在javascript中的子节点?,javascript,Javascript,我的javascript不太好。 我有这样一个DOM结构: <div data-embed-url="https://www.youtube.com/watch?v=5DkrwfY2jw4"> <div class="black"> <div> <div style="left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;">
<div data-embed-url="https://www.youtube.com/watch?v=5DkrwfY2jw4">
<div class="black">
<div>
<div style="left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;">
<iframe allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/5DkrwfY2jw4"></iframe>
</div>
</div>
</div>
var black = document.querySelector('div.black');
var divToKeep = black.children[0].children[0];
black.parentNode.replaceChild(divToKeep, black);
如何删除类为“black”的节点和没有样式和类的div并保留其他节点?假设您使用的是ES5:
// Find the `.black`
var black = document.querySelector('.black');
// Replace `.black` with its first child
black.parentNode.replaceChild(black.firstChild, black);
假设您正在使用ES5:
// Find the `.black`
var black = document.querySelector('.black');
// Replace `.black` with its first child
black.parentNode.replaceChild(black.firstChild, black);
您应该在div上使用ID来操作DOM。ID是唯一的。不鼓励使用类,因为您可以在多个DOM节点上使用类
// Removing a specified element when knowing its parent node
var d = document.getElementById("top");
var d_nested = document.getElementById("nested");
var throwawayNode = d.removeChild(d_nested);
更多信息:
使用具有div ID的代码的示例:
//在知道指定元素的父节点时删除该元素
var d=document.getElementById(“blackId”);
var d_nested=document.getElementById(“blackChildId”);
var div_i_want=d_nested.innerHTML;
警报('BEFORE:'+d.innerHTML);
var throwayNode=d.removeChild(d_嵌套);
d、 innerHTML=div_i_want;
警报('AFTER:'+d.innerHTML)代码>
您应该使用div上的ID来操作DOM。ID是唯一的。不鼓励使用类,因为您可以在多个DOM节点上使用类
// Removing a specified element when knowing its parent node
var d = document.getElementById("top");
var d_nested = document.getElementById("nested");
var throwawayNode = d.removeChild(d_nested);
更多信息:
使用具有div ID的代码的示例:
//在知道指定元素的父节点时删除该元素
var d=document.getElementById(“blackId”);
var d_nested=document.getElementById(“blackChildId”);
var div_i_want=d_nested.innerHTML;
警报('BEFORE:'+d.innerHTML);
var throwayNode=d.removeChild(d_嵌套);
d、 innerHTML=div_i_want;
警报('AFTER:'+d.innerHTML)代码>
如果您打算删除两个div
元素,同时保留嵌套内容(以简化嵌套),那么您可以使用.replaceChild()
如下所示:
<div data-embed-url="https://www.youtube.com/watch?v=5DkrwfY2jw4">
<div class="black">
<div>
<div style="left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;">
<iframe allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/5DkrwfY2jw4"></iframe>
</div>
</div>
</div>
var black = document.querySelector('div.black');
var divToKeep = black.children[0].children[0];
black.parentNode.replaceChild(divToKeep, black);
如果您打算删除两个div
元素,同时保留嵌套内容(以简化嵌套),则可以使用.replaceChild()
,如下所示:
<div data-embed-url="https://www.youtube.com/watch?v=5DkrwfY2jw4">
<div class="black">
<div>
<div style="left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;">
<iframe allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/5DkrwfY2jw4"></iframe>
</div>
</div>
</div>
var black = document.querySelector('div.black');
var divToKeep = black.children[0].children[0];
black.parentNode.replaceChild(divToKeep, black);
那些代码> >代码>元素,你认为“空”,它们都有我所能看到的内容。顺便说一句,由于某种原因,
元素的开始标记末尾有一个不正确的引号。@DavidThomas抱歉,我修改了代码。我需要在没有任何样式或类的情况下删除div没有问题,如果您的代码没有其他错误,它只会帮助您避免问题的复杂性:)那么,您要删除的元素是
及其子元素
?显示您希望最终结果的样子。您可以使用jQuery吗?它有一个方法>代码> unReAPP()/代码>,它将删除一个容器元素并留下内容。这些代码> >代码>元素中的哪一个你认为是“空的”,它们都有我所能看到的内容。顺便说一句,由于某种原因,
元素的开始标记末尾有一个不正确的引号。@DavidThomas抱歉,我修改了代码。我需要在没有任何样式或类的情况下删除div没有问题,如果您的代码没有其他错误,它只会帮助您避免问题的复杂性:)那么,您要删除的元素是
及其子元素
?显示您希望最终结果的样子。您可以使用jQuery吗?它有一个方法.unWrap()
,该方法将删除容器元素并保留内容。哦,这与ES5无关,它是纯javascript(就像在主机脚本中一样)。;-)@RobGvar
part实际上与ES5有关。我有一段时间没有使用var
,我完全不喜欢这个关键字,这就是我提到ES5的原因:)哦,这与ES5无关,它是纯javascript(就像在主机脚本中一样)。;-)@RobGvar
part实际上与ES5有关。我有一段时间没有使用var
,我完全不喜欢这个关键词,这就是为什么我提到ES5:)