首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >动态添加事件监听器。函数会触发,但我如何发送变量参数?

动态添加事件监听器。函数会触发,但我如何发送变量参数?
EN

Stack Overflow用户
提问于 2013-04-02 23:09:36
回答 2查看 69关注 0票数 0

我正在用JavaScript构建一个表,其中包含一个单元格,其中包含一个链接,单击该单元格时,应该会触发一个函数。单元格是在一个循环中添加的,在这个循环中,i会随着每个周期递增,我希望将i作为参数嵌入到我的函数中。

使用下面的代码,当我在接收函数中使用alert(i);时,我没有得到正确的数字。首先,无论迭代如何,添加的元素都具有数字3 (可能不是巧合,我在一个3个记录的数据源上测试了这一点)。

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Add supplier name to cell as a link
var a = document.createElement('a');
var linkText = document.createTextNode(data[i].supName);
a.appendChild(linkText);
a.title = "Click to create a purchase order.";
a.href = "#";
alert('inserting '+i); // diagnostic line
a.onclick = function(){postData ('main/createPO.php', '', 'makePO(resp,'+i+')', '', '')};
td1.appendChild(a);
tr.appendChild(td1);

上面是在i递增的for循环中。

诊断警报将触发:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
inserting 0
inserting 1
inserting 2

..。但是嵌入的i似乎总是3!

这是重要的一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a.onclick = function(){postData ('main/createPO.php', '', 'makePO(resp,'+i+')', '', '')};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-02 23:17:52

这个人和你有同样的问题,有一个很好的答案:JavaScript closure inside loops – simple practical example

票数 1
EN

Stack Overflow用户

发布于 2013-04-02 23:24:32

有一种更简单的方法来解决你的问题。我对这个问题有一个更复杂的版本。

对于每个元素,只需创建一个自定义属性。

$(a).attr("myValue",i);

然后在.click上,只需传递Number($(.click).attr(“myValue”));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15776066

复制
相关文章
IAR参数变量 _以及如何添加vscode
您可以为路径和参数使用参数变量,例如,当您在选项对话框中指定include路径时,或者当需要基于当前上下文的类似宏的扩展时,例如在工具的参数中。您可以使用广泛的预定义参数变量以及创建自己的参数变量,请参见配置自定义参数变量对话框。这些是预定义的参数变量:
用户4645519
2022/05/09
8660
IAR参数变量 _以及如何添加vscode
数据库(视图,事件,触发器,函数,存储,变量)
当表格内发生,增,删,改对立面数据有变动时,我们可以给他特定的变动内容,除法某些select语句,以及逻辑判断
小小咸鱼YwY
2019/07/22
1.2K0
如何实现动态添加的元素添加点击事件
在页面开发过程中常常遇到需要动态添加元素,然后给这一元素绑定相关事件的情况,这种情况下一般需要给元素加上相关属性,然后写这些元素的事件函数即可。动态添加的元素怎么绑定事件呢?
前端老道
2022/03/29
4K0
关闭浏览器触发监听器,向后端发送请求
项目使用Vue + SpringBoot搭建的前后端分离项目,后端存储用户登录信息和Token。现在的需求是,多端只可以有一个用户登录,当一个用户关闭浏览器或者关闭标签页时,向后端发送请求删除该用户的登录信息,以此来解决用户及时下线的目的。
猫老师的叶同学
2023/03/01
1.6K0
关闭浏览器触发监听器,向后端发送请求
腾讯云云函数添加触发器
不是发了个使用腾讯云函数续费EUserv免费IPv6VPS教程嘛!感觉太麻烦了,然后就写了这篇是专门设置定时运行云函数脚本教程。
回忆大大
2021/09/08
2.1K0
input动态赋值后怎么触发change事件 原
但是当我们给元素赋值时并不会触发上面的2种事件,如果我们想赋值后触发上面的事件,可以采用下面的方法
tianyawhl
2019/04/04
8.4K0
Jenkins触发构建--事件触发
事件触发就是发生了某个事件就触发pipeline执行,这个事件可以是你能想到的任何事件,比如手动在界面上触发、其它job主动触发、HTTP API Webhook触发等。
陈不成i
2021/06/02
5.9K0
matlab函数plot函数_动态变量
此种方法比较原始,适合于即时数据,原理是先画上一帧,接着保留原始图像,追加下一幀图像,此种方式比较繁琐,涉及画图细节,并且没有完整并连续的Line对象数据。此种方法需要注意的地方是,若想生成连续的线图,则每次plot至少两个点,原理大家都应该理解,两点一线嘛!如果想每次一个点增量式的画图,则线型选择’.’。
全栈程序员站长
2022/11/07
7280
matlab函数plot函数_动态变量
前端JavaScript中的动态事件添加
在前端开发中,交互性是至关重要的。动态事件添加是一种在JavaScript中实现交互的重要技术。本文将介绍动态事件添加的概念和优势,并详细介绍两种常用的动态事件添加方法。
海拥
2023/06/23
3230
微信小程序返回携带参数或触发事件
let pages = getCurrentPages(); let prevPage = pages[pages.length - 2] prevPage.active() //调用上个页面的事件 prevPage.setData({ //setData给上个页面的data进行赋值 select:1 }) wx.navigateBack({ delta: 1 })
明知山
2021/06/21
6110
DataGrid中DropDownList的动态绑定和触发DropDownList事件[通俗易懂]
我在写DataGrid控件中子控件事件时候,DropDownList的事件相比而言麻烦一点,在此,我简单罗列如下(我在此处为了方便这里都用DataGrid中的隐藏列存储我所要的数据):
全栈程序员站长
2022/10/01
1.1K0
代码触发,手动触发touchstart事件,touch事件,click事件,自定义事件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150775.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
4.9K0
(十三)给函数参数添加类型
# 一、给函数参数添加类型 说明 在我们定义函数的时候参数的类型是无法推断的,因为函数只是一段将要执行的代码 对于参数的类型只有在将要调用的时候才会知道,如果对函数参数的值没有限定的时候,就可以传递任意类型的值 如果当某个函数执行的是数学运算的时候我们传入的是一个字符串,那么就会发生不可预期的错误 例 function add(a, b) { console.log(a + b) } // 函数的参数没有类型,当我们传递其他类型的参数也是可的, 机会出现不可预期的错误 add('hellow',
老怪兽
2023/02/22
7790
19.QT-事件发送函数sendEvent()、postEvent()
Qt发送事件分为两种 -阻塞型事件发送 需要重写接收对象的event()事件处理函数 当事件发送后,将会立即进入event()事件处理函数进行事件处理 通过sendEvent()静态函数实现阻塞发送: bool QApplication::sendEvent ( QObject * receiver, QEvent * event ) ; // receiver:接收对象, event :要发送的event类型(比如:鼠标双击) //当有事件发送,将会
诺谦
2018/07/31
1K0
19.QT-事件发送函数sendEvent()、postEvent()
19.QT-事件发送函数sendEvent()、postEvent()
Qt发送事件分为两种 -阻塞型事件发送 需要重写接收对象的event()事件处理函数 当事件发送后,将会立即进入event()事件处理函数进行事件处理 通过sendEvent()静态函数实现阻塞发送: bool QApplication::sendEvent ( QObject * receiver, QEvent * event ) ; // receiver:接收对象, event :要发送的event类型(比如:鼠标双击) //当有事件发送,将会
诺谦
2018/05/28
3.3K0
onbeforeunload事件_pageload事件何时触发
注意:为了防止不需要的弹出窗口,浏览器可能不会显示在beforeunload事件处理程序中创建的提示,除非页面已与之交互,甚至根本不显示它们。
全栈程序员站长
2022/11/03
3K0
Python函数详解一(函数参数、变量作用域)
函数的返回值用return语句返回,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。
吾非同
2020/10/26
1K0
Python函数详解一(函数参数、变量作用域)
aos 事件触发失败
项目中遇到这个问题,网页往下滑动时加载 aos 事件触发不了,原因也很简单,因为 aos.js 是在页面加载时获取页面高度从而绑定一些事件进去,但是如果这个文件加载速度比框架加载的快,会导致两者高度不一致,从而动画效果触发失败。
子舒
2023/08/23
3690
NodeJS教程
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
达达前端
2019/07/03
1.9K0
点击加载更多

相似问题

动态添加时不触发JQuery事件监听器

11

如何动态添加事件监听器

40

向动态创建的事件监听器添加参数

27

动态添加事件监听器

238

动态添加事件监听器

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文