【发布时间】:2018-09-10 12:21:38
【问题描述】:
我有以下设置。在这里我正在尝试添加自定义单选和复选框。
Array.from(document.querySelectorAll("tr")).forEach((tr,index)=>{
var mark=document.createElement("span");
Array.from(tr.querySelectorAll("input")).forEach((inp,index1)=>{
if(inp.type=="radio"){
mark.classList.add("dotmark");
inp.parentNode.appendChild(mark);
}
else{
mark.classList.add("checkmark");
inp.parentNode.appendChild(mark);//instead append in to the next td's label tag
}
})
})
span{
width:20px;
height:20px;
background:#ccc;
display:inline-block;
}
<table id="tab1" class="table labelCustom">
<tbody>
<tr><td><input type='radio' id='one' name='name'></td><td><label for='one'>example</label></td></tr>
<tr><td><input type='radio' id='two' name='name'></td><td><label for='two'>example</label></td></tr>
<tr><td><input type='radio' id='three' name='name'></td><td><label for='three'>example</label></td></tr>
</tbody>
</table>
我希望将动态创建的 span 元素插入到标签标签中。现在它把它插入到输入 td 中。
注意:span 元素的类取决于输入类型。
【问题讨论】:
-
inp.parentNode是td。也许试试inp.closest('tr').querySelector('label')。 -
我希望将 span 元素插入到下一个 td 的标签标签中
-
对 connexo 的进一步评论:
inp.parentNode.nextElementSibling.querySelector('label').appendChild('mark');您发布的脚本表明您似乎非常了解 JavaScript,所以我在您的问题中遗漏了什么吗?你需要什么帮助?此外,您的评论意味着如果input不是type=radio,您只希望将<span>附加到<label>? -
@DavidThomas,谢谢,我尝试了“nextSibling”,但它不起作用,但 nextSiblingElement 起作用了。
标签: javascript html css dom-traversal