Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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 错误的事件侦听器执行_Javascript_Html_Session Storage - Fatal编程技术网

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”功能?