JS中如何选择多个同名的class类
P粉005134685
P粉005134685 2024-03-26 17:46:43
[PHP讨论组]

我使用 PHP 动态渲染从数据库获取的这些列表,每个列表都有相同的类,因为我无法更改它,它会动态渲染。我通过 JavaScript 选择这些类,并在单击时创建一个事件,以使用隐藏类打开和关闭它们。

现在我有一个问题,这个事件对我有用,并且仅对第一个呈现的列表做出反应,但对其他列表不起作用。有什么方法可以做到这一点,我尝试了 querySelectorAll 和 getElementsByClassName 以及其他一些选择器,但没有任何效果。 PHP 代码:

    num_rows > 0) { while($row = $result->fetch_assoc()) { $karton = get_karton($user_id); foreach($result as $karton) { echo "
  • Karton " .$karton['id']."

  • " . $karton['nalaz'] . "


    " . $karton['dijagnoza'] . "


    " . $karton['pregled'] . "

    "; } } } ?>

JavaScript 代码:

let karton = document.querySelector('.likarton');
let div = document.querySelector('.kartondiv');

karton.addEventListener('click', () => {
  if (div.classList.contains('hidden')) {
    div.classList.remove('hidden');
  } else {
    div.classList.add('hidden');
  }
});

这是一个模板: 模板 在此输入图像描述

P粉005134685
P粉005134685

全部回复(2)
P粉652523980

您需要使用querySelectorAll()而不是querySelector()

这样您将定位所有元素,而不是第一个匹配的元素。 然后,您应该循环遍历每个事件并添加一个事件侦听器,如下所示:

let kartons  = document.querySelectorAll(".abc");

kartons.forEach(el => {
    el.addEventListener("click", (event) => {
         // Something happens on click

    })
});
P粉674999420

您仅选择第一个 .likarton 实例 - 这是通过使用 querySelectorAll() 修复的


由于您使用的是 addEventListener,因此您将获得被单击的确切项目作为回调中的参数。

使用此功能的正确 JavaScript 是 addEventListener('click', (event) => {})

要引用触发事件处理程序的元素,您可以使用 event.currentTarget

从那时起,您可以选择 div 并使用 .classList.* 修改类列表


示例

let karton = document.querySelectorAll('.likarton');

for (let i = 0; i  {
    let div = document.querySelector('.kartondiv');

    if (div.classList.contains('hidden')) {
      div.classList.remove('hidden');
    } else {
      div.classList.add('hidden');
    }
  });
}

参考文献:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号