【问题标题】:Is there a way to add a class to an element followed by a character? [closed]有没有办法将一个类添加到一个元素后跟一个字符? [关闭]
【发布时间】:2021-06-12 00:08:33
【问题描述】:

我有一些看起来像这样的 HTML:

<p>
  <span class="word">keyword</span>
  ()
  <span class="word">another keyword</span>
</p>

如何将使用 JavaScript(非 jQuery)的类添加到任何具有“word”类的元素,该类在其自身之后直接带有“(”字符? HTML 应如下所示:

<p>
  <span class="word parenthesis">keyword</span>
  ()
  <span class="word">another keyword</span>
</p>

【问题讨论】:

  • 我该怎么做?
  • 您能否向我们展示您的尝试,我们可以帮助您了解问题所在? StackOverflow 不是代码编写服务
  • 您可以查询类word的所有元素并检查每个下一个元素
  • @jabaa 字符串不在下一个元素中,它在文本节点中。
  • 使用.nextSibling 获取元素之后的下一个节点。去掉前导空格,并检查第一个字符是否为(。然后添加类。

标签: javascript html dom


【解决方案1】:

使用@Barmar 的评论,我设法写了这个:

document.querySelectorAll('.word').forEach((el) => {
  if (el.nextSibling.data.trim().charAt(0) === '(') {
    el.classList.add('parenthesis');
  }
});

【讨论】:

    【解决方案2】:

    let classList = document.querySelectorAll('.word');
    
    for (let i = 0; i < classList.length; i++) {
      classList[i].classList.add("anotherClass");
    
      //classList[i].classList.remove("word");
    }
    .anotherClass {
      font-weight: bold;
    }
    <p>
      <span class="word">keyword</span>
      <span class="">-No class-</span>
      <span class="word">keyword</span>
      <span class="word">another keyword</span>
      <span class="word">keyword</span>
      <span class="">-No class-</span>
      <span class="word">keyword</span>
      <span class="word">another keyword</span>
    </p>

    【讨论】:

    • 这在哪里检查元素后面的文本节点是否以(开头?
    猜你喜欢
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2020-09-07
    相关资源
    最近更新 更多