このコードでどこが間違っているのかわかりません。私が探しています何Clickイベントハンドラ内の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();
});
}
私のロジックは次のとおりです。
ザ・ループのために李さんのそれぞれの上にクリック条件を設定します。ここでクリックされるとsetInterval関数が呼び出され、もう一度クリックするとその関数が停止します。
どこが間違っていますか?ありがとう。
イベントリスナー内で同じ変数名を割り当てると、 'writeMe'は関数ではありません。タイマーIDです。それが機能ではないことをあなたに伝えるブラウザコンソールのエラーを表示する必要があります – charlietfl
ありがとう。変数名writeMeをtellMeに変更しました。ここには[JSBin](http://jsbin.com/jibitil)があります。私が今直面している2つの問題は、 'clearInterval()not working'です。タブをクリックし続けるうちに、' animation is speeding'! – SamC
@SamC、チェック[私の答え](http://stackoverflow.com/a/43953682/2545680) –