如何从 javascript 中的节点列表中的单个元素切换 class

How to toggle a class from a single element in a node list in javascript

我正在尝试在您单击后将 class“隐藏”切换为单个元素。这是我的代码,它使用 class 切换所有元素。如何仅切换单击的元素?谢谢。

 <div class="card">
      <div class="card-body">
        <h5 class="card-title">pikachu</h5>
        <p class="card-text">lorem ipsum</p>
        <button id="btn" onClick="showSkills()" class="btn btn-primary">Skills</button>
      </div>
      <div id='text' class='skills hidden'>
       <p>skill skill</p>
      </div>
 </div>

我的javascript代码:

const showSkills = () => {

    Array.from(document.querySelectorAll('#text')).forEach((el) => el.classList.toggle('hidden'));
   
}

您可以将点击的元素的 event.target 作为参数传递,试试这个:

const f = (el) => {
    console.log(el)
    el.classList.toggle('hidden')
}
<h5 class="card-title" onClick="f(event.target)">pikachu</h5>

您可以使用 parentNode 获取点击按钮的 card-body 元素,然后获取它的邻居 #text 来切换它的 classList:

const showSkills = e => {
  const cardBody = e.target.parentNode;
  const skills = cardBody.nextElementSibling;
  skills.classList.toggle('hidden');
}
.hidden{display:none;}
<div class="card">
  <div class="card-body">
    <h5 class="card-title">pikachu</h5>
    <p class="card-text">lorem ipsum</p>
    <button id="btn" onClick="showSkills(event)" class="btn btn-primary">Skills</button>
  </div>
  <div id='text' class='skills hidden'>
    <p>skill skill</p>
  </div>
</div>
<div class="card">
  <div class="card-body">
    <h5 class="card-title">pikachu</h5>
    <p class="card-text">lorem ipsum</p>
    <button id="btn" onClick="showSkills(event)" class="btn btn-primary">Skills</button>
  </div>
  <div id='text' class='skills hidden'>
    <p><span>skill</span> <span>skill</span></p>
  </div>
</div>

据我了解,当单击一个元素(如按钮)时,您想在被单击的元素上切换 class 吗?

如果是这种情况,您会想做这样的事情。

HTML: 添加onClick功能时,将"this"作为参数。这会将被单击的对象作为参数发送到被调用的函数。

<div class="card">
  <div class="card-body">
    <h5 class="card-title">pikachu</h5>
    <p class="card-text">lorem ipsum</p>
    <button id="btn" onClick="showSkills(this)" 
class="btn btn-primary">Skills</button>
  </div>
  <div id='text' class='skills hidden'>
   <p>skill skill</p>
  </div>
</div>

Javascript:这是单击对象时调用的函数。如您所见,它有一个参数,即被单击的对象。我们可以使用它并切换 class.

function showSkills(_this) {
    _this.classList.toggle('hidden');
}

这是一个 JSFiddle 示例:https://jsfiddle.net/vhu9xfLz/