プレーヤのJavaScript(JQueryはありません)で同じ要素を1回クリックしてダブルクリックするという問題に取り組んでいたとき、私はthis解決策を見ました@Garland教皇によると、プレーンJavaScriptにそれを翻訳:setTimeoutは期待通りに機能しますが、seIntervalはクリックイベントでは発生しません
var numClicks = 0,
interval = null,
delay = 250;
document.addEventListener("click", function(event) {
numClicks++;
if (numClicks === 1) {
interval = setTimeout(function() {
// Things to do on one click.
console.log("Single Click");
numClicks = 0;
}, delay);
} else {
clearTimeout(interval);
// Things to do on double click.
console.log("Double Click");
numClicks = 0;
}
});
しかし、私はのsetIntervalとてclearIntervalにのsetTimeoutとてclearTimeoutを変更したときに、それぞれ私が期待される結果を取得できませんでした。 "setTimeout"を使用すると、"遅延"時間内に2回クリックすると、ダブルクリックが記録され、"遅延"時間以内にシングルクリックすると、 "シングルクリック"のみが記録されます。。
しかし、 "setInterval"では、同じ話がダブルクリックになります。しかし、その違いはワンクリックでもたらされます。 「遅延」時間内に1回クリックすると、「シングルクリック」が記録されますが、何度もとは決して停止しません。 これは私が望んでいないものです。
これはどうして起こったのですか?何も思いつきません。ありがとうございました。
setTimeout関数をエミュレート一度setInterval - 毎秒関数を呼び出すタイマー "? – Shashank
はい、私は理解しました。ありがとう! – Shashank