循环中的JS onclick事件

短剑

我对JavaScript和onclick事件有疑问。我想从我在循环中创建的元素定义onclick事件。我的代码看起来像这样:

for (var i = 0; i < result.entries.length; i++) {
  var entry = result.entries[i];
  var adder = document.createElement('span');
  adder.innerHTML = '+';
  adder.onclick = function () {
    addFeed(entry.title, entry.url);
    backButton();
  };
  container.appendChild(adder);
}

问题是,此代码创建了这样的事件侦听器:

listenerBody: "function () {addFeed(entry.title, entry.url); backButton();}"

但是我需要entry.title和entry.url的值,例如:

listenerBody: "function () {addFeed('ABC', 'http://example.com'); backButton();}"

我希望有一个人可以帮助我。

fmsf

您只是碰到了JavaScript中的一种称为提升和闭合循环的事情。

发生的情况是您的循环继续进行,并且在触发onclick函数时,entry变量中的内容是的最后一个元素result.entries

为了解决这个问题,您可以将其锁定在一个闭包中(示例):

function setOnClickEvent(element, entryValue) {
  element.onclick = function () {
    addFeed(entryValue.title, entryValue.url);
    backButton();
  };
}

for (var i = 0; i < result.entries.length; i++) {
  var entry = result.entries[i];
  var adder = document.createElement('span');
  adder.innerHTML = '+';
  setOnClickEvent( adder, entry)
  container.appendChild(adder);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

循环中的JS onclick事件

来自分类Dev

在onclick事件处理程序循环中设置当前元素

来自分类Dev

for循环中的onclick事件一定时间

来自分类Dev

将onclick事件添加到循环中的各个div

来自分类Dev

将数据 onClick 事件传递给循环中的函数

来自分类Dev

检查node.js事件循环中的事件

来自分类Dev

当放置在ReactJS的forEach循环中时,onClick事件未传递函数

来自分类Dev

在foreach循环中添加onclick事件侦听器不起作用

来自分类Dev

在foreach循环中使用Ajax发布按钮的表单数据onclick事件

来自分类Dev

循环中的javascript onload事件

来自分类Dev

循环中的javascript onload事件

来自分类Dev

For循环中的kivy按钮事件

来自分类Dev

在鼠标事件的 for 循环中赋值

来自分类Dev

返回带有onclick事件的循环示例

来自分类Dev

表和foreach循环内的onclick事件

来自分类Dev

每个函数事件的PHP for循环Onclick函数

来自分类Dev

React.js中的OnClick事件绑定

来自分类Dev

无法通过onclick事件调用JS函数

来自分类Dev

图像-React JS中的onclick事件

来自分类Dev

JS元素onclick事件未触发

来自分类Dev

onClick事件不起作用-JS

来自分类Dev

react.js 中的 onClick 事件错误

来自分类Dev

onclick 事件发生而没有实际发生单击事件 - js

来自分类Dev

Node.js:检查事件循环中剩余的内容,以防止脚本自然退出

来自分类Dev

如何在vue.js的内部循环中通过click事件传递数据

来自分类Dev

AngularJS鼠标事件在循环中多次触发

来自分类Dev

Qt(PyQt)事件循环中的xmlprc?

来自分类Dev

IF ELSE循环中的按钮单击事件

来自分类Dev

在for循环中绑定事件处理程序