javascript - 当只有一个应该在点击时改变时,所有愿望 list 项目的文本都会改变

标签 javascript

抱歉,我需要帮助。我想制作一个愿望 list 切换按钮,点击图标 - fa-heart 从轮廓变为实心。我已经做到了。我的问题是,工具提示(添加到愿望 list )应该在目标元素上更改为“添加到愿望 list ”。但相反,它正在改变数组的所有元素。如何停止此行为以使其仅在目标元素上发生变化? 谢谢。

let i, j, toolTip;
let addItem;

for (i = 0; i < addToWish.length; i++) {
  let addItem = addToWish[i];

  function addToWishList() {

    addItem.classList.add('fas');
    addItem.classList.add('far');
    favIconData++;
    favDataOutput.textContent = favIconData;
    navActionBadge.setAttribute('value', `${favIconData}`);

    if (favIconData >= 1) {
      favoriteIcon.classList.add('fas');
      favoriteIcon.classList.remove('far');
    } else {

      favoriteIcon.classList.remove('fas')
      favoriteIcon.classList.add('far')
    }
  }

  function removeWishList() {
    addItem.classList.remove('fas');
    addItem.classList.add('far');
    favIconData--;
    favDataOutput.textContent = favIconData;
    navActionBadge.setAttribute('value', `${favIconData}`);

    if (favIconData >= 1) {
      favoriteIcon.classList.add('fas');
      favoriteIcon.classList.remove('far');

    } else {

      favoriteIcon.classList.remove('fas')
      favoriteIcon.classList.add('far')
    }
  }

  addItem.addEventListener('click', () => {

    if (addItem.classList.contains('fas')) {
      for (let j = 0; j < cardLabel.length; j++) {
        let label = cardLabel[j];

        label.textContent = 'Add to wishlist';
      }

      removeWishList()
    } else {
      for (let j = 0; j < cardLabel.length; j++) {
        let label = cardLabel[j];

        label.textContent = 'Added to wishlist';
      }

      addToWishList()
    }
  })

}
<html>
<li class="card-action-item">
  <button class="card-action-btn" aria-labelledby="card-label-2">
    <i id="fav"  class="far fa-heart">.</i>
  </button>
  <div class="card-action-tooltip" id="card-label-3">Add to Wishlist</div>
</li>

</html>

最佳答案

不要使用循环来更新所有标签。只需更改当前按钮后的标签即可。

  addItem.addEventListener('click', () => {
    let label = addItem.closest(".card-action-item").querySelector(".card-action-tooltip");
    if (addItem.classList.contains('fas')) {
      label.textContent = 'Add to wishlist';
      removeWishList()
    } else {
      label.textContent = 'Added to wishlist';
      addToWishList()
    }
  })

关于javascript - 当只有一个应该在点击时改变时,所有愿望 list 项目的文本都会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72493949/

相关文章:

javascript - 当它出现在页面上时单击按钮/提交

javascript - 正则表达式替换重复模式

javascript - Open BlueDragon 中的相对/绝对 CFC 路径

javascript - $document.ready 和 $rootScope.$on ('$viewContentLoaded' 之间有什么区别)?

javascript - 高级参数使用

javascript - 叠加 2x 图像 Blob

javascript - 如何从方法访问 Vue.js 组件数据?

javascript - 根据条件分配表格单元格颜色 - JavaScript

javascript - 重置 React JS 的状态

javascript - 如何避免在触摸设备上选择传单路径