【发布时间】:2019-05-16 14:47:41
【问题描述】:
我需要让用户输入标记(表格),如果表格不包含 class="table" 的 div,我需要添加 div & 类。我需要忽略任何其他子元素,例如 p、span,并且只针对带有表格的元素。
<div class="parent">
<div class="table"><table></table></div>
<div class="table"><table></table></div>
<table></table>
<div><table></table></div>
<div class="table"><table></table></div>
<p></p>
<span></span>
</div>
您可以在上面的节点列表中看到,节点索引 2,3 都需要一个 class="table" 的包装 div,但忽略 p 和 span。
[].map.call(table, (node) => {
if (!node.parentNode.classList.contains('table')) {
const parent = document.getElementsByClassName('parent');
[].map.call(parent, (nodeChild) => {
const addWrap = document.createElement('div');
addWrap.classList.add('table');
addWrap.appendChild(node);
nodeChild.append(addWrap);
});
}
});
我已经尝试过了,但它在索引底部附加了一个包装 div 的节点。如何让节点以正确的顺序附加到包装器 div 中?谢谢。
【问题讨论】:
-
所以
.parent的所有与选择器div.tabble不匹配的直接子元素都应该用那个元素包裹? -
是的,所以任何时候用户进入一个表格,如果他们不添加一个 div class="table" 作为直接父级,它应该添加 div 和类。
标签: javascript indexof nodelist