是否可以仅更改标签中的文本(不能更改其他元素)?

时间:2019-05-13 08:58:34

标签: javascript jquery html label

我想从以下标签中删除文本(以*突出显示),但是我希望标签元素后代的所有其他文本内容保持完好无损。我该如何实现?

这是我的HTML示例:

<label class="has-checkbox terms">
    <input name="order[terms]" type="hidden" value="0">
    <div class="icheckbox_minimal" style="position: relative;">
        <input class="checkbox" type="checkbox" value="1" name="order[terms]" id="order_terms">
        <ins class="iCheck-helper"></ins>
    </div>
    *ich habe die*
    <a href="#">AGBs</a>
    *gelesen und stimme diesen zu.* 
    <span class="terms-error"></span>
</label>

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,您希望删除直接包含在<label>元素中的文本,而不会影响标签中其他子元素的文本。

这可以在不使用jQuery的情况下通过迭代childNodes元素的<label>并清除每个文本节点的textContent来实现,如下所示:

const label = document.querySelector('label');

/* Iterate the nodes of the label */
for(const node of label.childNodes) {

  /* Clear the text content of each child node 
  that is a text node */
  if(node.nodeName === '#text') {
    node.textContent = '';
  } 
}
<label class="has-checkbox terms">
    <input name="order[terms]" type="hidden" value="0">
    <div class="icheckbox_minimal" style="position: relative;">
        <input class="checkbox" type="checkbox" value="1" name="order[terms]" id="order_terms">
        <ins class="iCheck-helper"></ins>
    </div>
    *ich habe die*
    <a href="#">AGBs</a>
    *gelesen und stimme diesen zu.* 
    <span class="terms-error"></span>
</label>