Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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单击“按下时不更改变量”_Javascript - Fatal编程技术网

Javascript Eventlistener单击“按下时不更改变量”

Javascript Eventlistener单击“按下时不更改变量”,javascript,Javascript,我正在我的网站上制作幻灯片,我想知道如何更改变量I javascipt var list = document.getElementById('list1'); list.addEventListener("click", press()); var slideshow = document.getElementById('slideshow'); var bilder = ['bild1.png','bild2.png','bild3.png']; var totalpics = mypic

我正在我的网站上制作幻灯片,我想知道如何更改变量
I

javascipt

var list = document.getElementById('list1');
list.addEventListener("click", press());

var slideshow = document.getElementById('slideshow');
var bilder = ['bild1.png','bild2.png','bild3.png'];
var totalpics = mypics.length;
var i = 0;
var a= 0

function press(){
i=0;
}

function loop() {
    if(i > (totalpics - 1)){
    i = 0;  
    }
slideshow.innerHTML = '<img src="bilder/'+bilder[i]+'">';
i++;
loopTimer = setTimeout ('loop()',3000);
}
loop();
var list=document.getElementById('list1');
addEventListener(“单击”,按());
var slideshow=document.getElementById('slideshow');
var bilder=['bild1.png','bild2.png','bild3.png'];
var totalpics=mypics.length;
var i=0;
变量a=0
函数压力机(){
i=0;
}
函数循环(){
如果(i>(totalpics-1)){
i=0;
}
slideshow.innerHTML='';
i++;
loopTimer=setTimeout('loop()',3000);
}
loop();
html



  • 当我按下
    li id=“list1”
    时,为什么
    i
    没有变为0?

    您需要的是函数本身,而不是其调用的结果

    list.addEventListener("click", press);
    
    顺便说一句

    loopTimer = setTimeout (loop, 3000);
    

    现在,它将在单击时运行循环,并且在单击后将再次返回到零,是否可以取消/重置循环?因为如果您多次按下,它将实际加速循环。例如
    函数restart(){i=0;loopTimer&&clearTimeout(loopTimer);loop();}
    loopTimer = setTimeout (loop, 3000);