鱼C论坛

 找回密码
 立即注册
查看: 127|回复: 5

[已解决]点击事件监听获取方法

[复制链接]
发表于 2024-3-11 11:49:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
<ul class="process-nav">
                <li class="process P">( P )</li>
                <li class="process W">( W )</li>
                <li class="process T">( T )</li>
                <li class="process A">( A )</li>
                <li class="process R">( R )</li>
                <li class="process I">( I )</li>
                <li class="process L">( L )</li>
              </ul>


我有以上HTML
  1. var process = document.querySelectorAll(".process")
  2. var part = document.querySelector(".part")

  3.     for (var i = 0; i < process.length; i++) {
  4.         (function (index) {
  5.             process[index].addEventListener("click", function () {
  6.                 part.style.display = "flex"

  7.             })
  8.         })(i)
  9.     }
复制代码


我创建了点击事件以下点击事件,我想获取用户点击以上对应li标签的序号如何操作,
例如点击了<li class="process I">( I )</li>  我想获得 5序号

因该如何写



最佳答案
2024-3-12 15:11:30
只是那个人 发表于 2024-03-12 15:11
我如何在这个作用域以外调用index的参数呢?


如果您希望在回调函数所在的作用域以外访问`index`参数,可以将`index`保存在一个变量中,以便后续使用。具体代码如下:

  1. var process = document.querySelectorAll(".process");
  2. var part = document.querySelector(".part");
  3. var clickedIndex; //定义一个变量来保存点击的序号
  4. for (var i = 0; i < process.length; i++) {
  5.   (function(index) {
  6.     process.addEventListener("click", function() {
  7.       clickedIndex = index; //将点击的序号赋值给变量clickedIndex
  8.       console.log("用户点击了第" + (clickedIndex + 1) + "个process");

  9.       // 其他操作...
  10.     });
  11.   })(i);
  12. }

  13. // 在这之后的代码中可以使用clickedIndex变量来获取点击的序号
复制代码


在上面的代码中,我们在循环外部声明了一个`clickedIndex`变量,然后在点击事件的回调函数中将`index`赋值给`clickedIndex`,这样就可以在回调函数以外的作用域中使用`clickedIndex`了。请注意,点击事件发生之前,`clickedIndex`的值将是`undefined`,只有当用户点击了`.process`元素后,`clickedIndex`才会被赋值为相应的序号。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-11 11:49:41 | 显示全部楼层
您可以在点击事件的回调函数中使用event对象来获取目标元素的序号。具体代码如下:

  1. var process = document.querySelectorAll(".process");
  2. var part = document.querySelector(".part");

  3. for (var i = 0; i < process.length; i++) {
  4.     (function (index) {
  5.         process[index].addEventListener("click", function (event) {
  6.             // 获取被点击标签的序号
  7.             var clickedIndex = index;
  8.             console.log(clickedIndex);
  9.             
  10.             part.style.display = "flex";
  11.         });
  12.     })(i);
  13. }
复制代码


在上面的代码中,我们给每个`.process`元素添加了点击事件监听,并在回调函数中通过`index`参数记录了被点击标签的序号。你可以将序号保存到变量中,或者进行其他的操作。

另外,需要注意的是,这里使用了立即调用函数表达式(IIFE)来解决循环绑定事件时的作用域问题,确保每个回调函数拥有自己独立的`index`值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-12 15:09:53 | 显示全部楼层
FishC 发表于 2024-3-11 11:49
您可以在点击事件的回调函数中使用event对象来获取目标元素的序号。具体代码如下:
  1.     var process = document.querySelectorAll(".process")
  2.     var part = document.querySelector(".part")
  3.     for (var i = 0; i < process.length; i++) {
  4.         (function (index) {
  5.             process[index].addEventListener("click", function() {
  6.                 part.style.display = "flex"
  7.                 var partText = process[index].innerText
  8.                 lis[0].innerHTML = "&#160;&#160;&#160;&#160;&#160;" + partText + " 欢迎您"
  9.                 lis[0].className = "p_title"
  10.                 companyNav.style.display = 'none'
  11.                 lis[1].classList.remove("textClass")
  12.                 part.classList.remove("partAcc")
  13.                 partBtn1.classList.remove("partBcc")
  14.                 partBtn2.classList.remove("partBcc")
  15.                 partBtn1.className = "part_bnt1"
  16.                 partBtn2.className = "part_bnt2"
  17.                 partBtn1.innerHTML = "生 产 工 艺 介 绍"
  18.                 partBtn2.innerHTML = "工 序 特 色 活 动"
  19.                 console.log(lis[0].innerText)
  20.             })
  21.         })(i)
  22.     }
复制代码


我对process进行了循环添加了点击事件,但是我要如何获得用户点击了第几个process[?]呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-12 15:10:08 | 显示全部楼层
只是那个人 发表于 2024-03-12 15:09
var process = document.querySelectorAll(".process" ...


您可以在点击事件的回调函数中使用`index`参数获取用户点击的是第几个`.process`元素。具体代码如下:

  1. var process = document.querySelectorAll(".process");
  2. var part = document.querySelector(".part");

  3. for (var i = 0; i < process.length; i++) {
  4.   (function(index) {
  5.     process[i].addEventListener("click", function() {
  6.       var clickedIndex = index;
  7.       console.log("用户点击了第" + (clickedIndex + 1) + "个process");
  8.       
  9.       // 其他操作...
  10.     });
  11.   })(i);
  12. }
复制代码


在回调函数中,我们通过`index`参数获取到用户点击的是第几个`.process`元素,并将序号加1打印出来。这样你就可以知道用户点击的是第几个元素了。请注意,序号是从0开始的,所以为了更直观,我们在输出时将序号加1。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-12 15:11:12 | 显示全部楼层
FishC 发表于 2024-3-12 15:10
您可以在点击事件的回调函数中使用`index`参数获取用户点击的是第几个`.process`元素。具体代码如下:
...

我如何在这个作用域以外调用index的参数呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-12 15:11:30 | 显示全部楼层    本楼为最佳答案   
只是那个人 发表于 2024-03-12 15:11
我如何在这个作用域以外调用index的参数呢?


如果您希望在回调函数所在的作用域以外访问`index`参数,可以将`index`保存在一个变量中,以便后续使用。具体代码如下:

  1. var process = document.querySelectorAll(".process");
  2. var part = document.querySelector(".part");
  3. var clickedIndex; //定义一个变量来保存点击的序号
  4. for (var i = 0; i < process.length; i++) {
  5.   (function(index) {
  6.     process.addEventListener("click", function() {
  7.       clickedIndex = index; //将点击的序号赋值给变量clickedIndex
  8.       console.log("用户点击了第" + (clickedIndex + 1) + "个process");

  9.       // 其他操作...
  10.     });
  11.   })(i);
  12. }

  13. // 在这之后的代码中可以使用clickedIndex变量来获取点击的序号
复制代码


在上面的代码中,我们在循环外部声明了一个`clickedIndex`变量,然后在点击事件的回调函数中将`index`赋值给`clickedIndex`,这样就可以在回调函数以外的作用域中使用`clickedIndex`了。请注意,点击事件发生之前,`clickedIndex`的值将是`undefined`,只有当用户点击了`.process`元素后,`clickedIndex`才会被赋值为相应的序号。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-29 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表