Javascript 如何将带有addEventListener的参数发送到函数?
我对编码很陌生,我遇到了这个小问题。我想用addEventListener发送一个参数。当我试图用EventListener发送参数时,它立即运行了该函数。我知道这是因为函数名后面有()。我试图做的基本上是: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';
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下面是马蒙写的那个?我想我不必重复了。还是说我们都错过了什么?