Javascript 错误的事件侦听器执行
我有以下代码:Javascript 错误的事件侦听器执行,javascript,html,session-storage,Javascript,Html,Session Storage,我有以下代码: <script type="text/javascript"> var total = 0; document.getElementById("pic1").addEventListener("click", choix(1), null); document.getElementById("pic2").addEventListener("click",
<script type="text/javascript">
var total = 0;
document.getElementById("pic1").addEventListener("click",
choix(1), null);
document.getElementById("pic2").addEventListener("click",
choix(2), null);
document.getElementById("pic3").addEventListener("click",
choix(3), null);
document.getElementById("pic4").addEventListener("click",
choix(4), null);
function choix(num) {
switch (num) {
case 1:
total = total + sessionStorage.getItem("prix1");
break;
case 2:
total = total + sessionStorage.getItem("prix2");
break;
case 3:
total = total + sessionStorage.getItem("prix3");
break;
case 4:
total = total + sessionStorage.getItem("prix4");
break;
default:
break;
}
alert(total);
}
</script>
var合计=0;
document.getElementById(“pic1”).addEventListener(“单击”,
choix(1),空);
document.getElementById(“pic2”).addEventListener(“单击”,
choix(2),空);
document.getElementById(“pic3”).addEventListener(“单击”,
choix(3),空);
document.getElementById(“pic4”).addEventListener(“单击”,
choix(4),空);
函数choix(num){
开关(num){
案例1:
总计=总计+会话存储.getItem(“prix1”);
打破
案例2:
总计=总计+会话存储.getItem(“prix2”);
打破
案例3:
总计=总计+会话存储.getItem(“prix3”);
打破
案例4:
总计=总计+会话存储.getItem(“prix4”);
打破
违约:
打破
}
警报(总数);
}
假设我已经创建了4个项目(使用localStorage.setItem方法),问题是即使没有单击任何div,我也会显示4个警报
有什么问题吗?谢谢大家! 发行
您正在执行choix
并将返回值传递给addEventListener
方法,而不是传递函数本身的引用
document.getElementById("pic1").addEventListener("click",
choix(1), null);
例子
您所做的与以下内容完全相同:
函数sayHello(lang){
如果(lang==“en”)
回复“你好”;
else if(lang==“it”)
返回“Ciao”;
else if(lang==“es”)
返回“Hola”;
其他的
返回“”;
}
console.log(sayHello(“en”);//打印“Hello”
您没有传递对choix
函数的引用,您正在执行它。是的,但我没有单击任何div!如何在没有点击事件的情况下执行“choix”功能?