Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量传递到eventListener中的arrow函数_Javascript_Electron - Fatal编程技术网

Javascript 将变量传递到eventListener中的arrow函数

Javascript 将变量传递到eventListener中的arrow函数,javascript,electron,Javascript,Electron,不久前,我需要将一个变量传递给从addEventListener调用的函数 for(let i of ["0","1","2","3","4","5","6","7","8","9","+","-","*","/",&q

不久前,我需要将一个变量传递给从
addEventListener
调用的函数

for(let i of ["0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","(",")"]){
    document.getElementById(i).addEventListener("click",()=>{add_chr(i)})
}
虽然这工作得很好,但我现在需要在
{}
中使用该函数,而不是
add\u chr(I)

我尝试了以下方法:

for (let i = 0; i < dict["files"].length; i++) {
  //i is undefined
  document.getElementById("rm" + i).addEventListener("click", (e, i) => {
    console.log(i)
    dict["files"].splice(i, 1)
    table()
  })
  //function does not execute
  document.getElementById("rm" + i).addEventListener("click", () => {
    (i) => {
      console.log(i)
      dict["files"].splice(i, 1)
      table()
    }
  })
}
for(设i=0;i{
控制台日志(i)
dict[“文件”]拼接(i,1)
表(
})
//函数不执行
document.getElementById(“rm”+i).addEventListener(“单击”,()=>{
(i) =>{
控制台日志(i)
dict[“文件”]拼接(i,1)
表(
}
})
}
这不起作用,在第一个事件侦听器中,
i
未定义,第二个函数从未执行。(我总是只使用一个
addEventListener
,这只是为了展示我的方法)。

如何将变量
I
传递给带有/不带
事件
对象的函数?

出于好奇,尝试将
let I=0
更改为
var I=0
,并从匿名事件处理程序中删除
I
,如下所示:

document.getElementById("rm" + i).addEventListener("click", (e) => { // etc.

出于好奇,尝试将
let i=0
更改为
var i=0
,并从匿名事件处理程序中删除
i
,如下所示:

document.getElementById("rm" + i).addEventListener("click", (e) => { // etc.

从匿名函数中删除
i
,因为它隐藏循环的
i
,并修复第二个函数的括号

for(设i=0;i<3;i++){
//我没有定义
document.getElementById(“rm”+i).addEventListener(“单击”,(e)=>{
控制台日志(i);
});
//函数不执行
document.getElementById(“rm”+i).addEventListener(“单击”,(e)=>{
控制台日志(i);
});
}
rm0
rm1

rm2
从匿名函数中删除
i
,因为它隐藏循环的
i
,并修复第二个函数的括号

for(设i=0;i<3;i++){
//我没有定义
document.getElementById(“rm”+i).addEventListener(“单击”,(e)=>{
控制台日志(i);
});
//函数不执行
document.getElementById(“rm”+i).addEventListener(“单击”,(e)=>{
控制台日志(i);
});
}
rm0
rm1

rm2
i始终是for loop的最后一个数字i始终是for loop的最后一个数字这只是一个友好的提醒,箭头功能在旧浏览器(如Internet Explorer)中不起作用。箭头函数并非没有用途,但在这种情况下,您可以替换一个常规匿名函数,并且它在不破坏IE的情况下也可以正常工作。@PHPGuru感谢您提供的信息,但这是一个电子项目,希望永远不会看到IE:)这只是一个友好的提醒,箭头功能在旧浏览器(如Internet Explorer)中不起作用。箭头函数并非没有用处,但在这种情况下,您可以替换一个常规匿名函数,它同样可以工作,而不会破坏IE。@PHPGuru感谢您提供的信息,但这是一个电子项目,希望永远不会看到IE:)