Javascript 如何将带有addEventListener的参数发送到函数?

Javascript 如何将带有addEventListener的参数发送到函数?,javascript,arguments,addeventlistener,Javascript,Arguments,Addeventlistener,我对编码很陌生,我遇到了这个小问题。我想用addEventListener发送一个参数。当我试图用EventListener发送参数时,它立即运行了该函数。我知道这是因为函数名后面有()。我试图做的基本上是: var card1 = document.getElementById('#id1'); card1.addEventListener('click',choose(1)); function(num){ var picture = 'pictures/picture1.png';

我对编码很陌生,我遇到了这个小问题。我想用addEventListener发送一个参数。当我试图用EventListener发送参数时,它立即运行了该函数。我知道这是因为函数名后面有()。我试图做的基本上是:

var card1 = document.getElementById('#id1');
card1.addEventListener('click',choose(1));

function(num){
 var picture = 'pictures/picture1.png';
 document.getElementById(num).src = pic.replace('90x90','225x225');

这是全部javascript代码,其目的是更改图片。var图片实际上是根据我代码中的一些数组选择的,但它只是一个图像。

在匿名函数中调用函数:

card1.addEventListener('click', function(){ choose(1); });

在匿名函数中调用/调用函数:

card1.addEventListener('click', function(){ choose(1); });

你有很多选择:

1) 使用bind创建一个已填入参数的新函数:

var card1=document.getElementById('#id1');
变量选择=函数(num){
console.log(num);
};
card1.addEventListener('click',choose.bind(null,1))

卡1
您有很多选择:

1) 使用bind创建一个已填入参数的新函数:

var card1=document.getElementById('#id1');
变量选择=函数(num){
console.log(num);
};
card1.addEventListener('click',choose.bind(null,1))

卡1
如果要为每个卡分配一个动态侦听器,可以让
单击事件返回一个带有目标卡和索引的函数调用

document.queryselectoral('.card').forEach((卡片,索引)=>{
card.addEventListener('click',函数(e){
选择卡片(如目标,索引+1);
});
});
功能选择卡片(卡片,数字){
card.classList.toggle('card-'+num);
}
.cards{
背景:绿色;
宽度:330px;
高度:100px;
}
.卡片{
显示:内联块;
背景:浅灰色;
宽度:50px;
高度:80px;
边缘顶部:10px;
左边距:10px;
背景:url('https://via.placeholder.com/50x80/AAA/F00?text=CARD中心不重复;
}
.card-1{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=1') }
.card-2{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=2') }
.card-3{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=3') }
.card-4{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=4') }
.card-5{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=5“)}

如果要为每个卡分配一个动态侦听器,可以让
单击事件返回一个带有目标卡和索引的函数调用

document.queryselectoral('.card').forEach((卡片,索引)=>{
card.addEventListener('click',函数(e){
选择卡片(如目标,索引+1);
});
});
功能选择卡片(卡片,数字){
card.classList.toggle('card-'+num);
}
.cards{
背景:绿色;
宽度:330px;
高度:100px;
}
.卡片{
显示:内联块;
背景:浅灰色;
宽度:50px;
高度:80px;
边缘顶部:10px;
左边距:10px;
背景:url('https://via.placeholder.com/50x80/AAA/F00?text=CARD中心不重复;
}
.card-1{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=1') }
.card-2{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=2') }
.card-3{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=3') }
.card-4{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=4') }
.card-5{背景图像:url('https://via.placeholder.com/50x80/FFF/00F?text=5“)}


addEventListener
中的第二个参数需要是函数,
choose()
是否返回事件函数?您的函数choose不存在
addEventListener
中的第二个参数需要是函数,是否
choose()
返回事件函数?您选择的函数不存在似乎错过了最常见的way@epascarello下面是马蒙写的那个?我想我不必重复了。或者你是说我们都错过了什么?似乎你错过了最常见的way@epascarello下面是马蒙写的那个?我想我不必重复了。还是说我们都错过了什么?