我不知道我在哪里出错了这段代码。单击事件处理程序中的SetInterval方法
我在寻找:
选项卡的列表上点击该动画开始时并再次点击它,它停止。我打算用setInterval来做(只是为了练习)。
下面是我想使用的代码:
function writeMe() {
var p = document.createElement("p");
p.innerHTML = "List 1";
var ilu = document.getElementById("ilu");
ilu.appendChild(p);
if (ilu.getElementsByTagName("p").length === 5) {
ilu.innerHTML = "";
}
}
var li = document.getElementsByTagName("li");
for(i=0;i<li.length;i++) {
li[i].addEventListener("click", function(e) {
if (this.style.backgroundColor == "yellow") {
this.style.backgroundColor = "";
clearInterval(writeMe);
} else {
for(i=0;i<li.length;i++) {
li[i].style.backgroundColor = "";
}
this.style.backgroundColor = "yellow";
var writeMe = setInterval(writeMe, 1000);
writeMe();
}
e.stopPropagation();
});
}
我的逻辑是:
For循环设置在每个李时珍的点击情况。现在,当他们被点击时,他们会调用setInterval函数,当再次点击时,他们会停止它。
我哪里错了?谢谢。
当您在事件侦听器中分配相同的变量名时,'writeMe'不是一个函数。这是计时器ID。浏览器控制台应该看到错误,告诉你它不是一个函数 – charlietfl
谢谢。我将变量名称writeMe更改为tellMe。这里是[JSBin](http://jsbin.com/jibitil)。我现在面临的两个问题是:'clearInterval()无法正常工作,并且随着我一直点击这些标签,'动画正在加速'! – SamC
@SamC,检查[我的答案](http://stackoverflow.com/a/43953682/2545680) –