मैं हर बार एक बटन क्लिक होने पर काउंटर वैरिएबल बढ़ाना चाहता हूं लेकिन हर सेकेंड में केवल एक बार।

मैंने काउंटर को बढ़ाने के लिए सोचा है, लेकिन अगर मैं 1 सेकंड में एक से अधिक बार बटन पर क्लिक करता हूं तो यह कई गुना बढ़ जाता है।

var score = 0;
increaseCount() {
  score++;
}

मैं काउंटर को हर सेकेंड में एक से बढ़ने के लिए कैसे प्रतिबंधित करूं?

-1
Nav Singh 9 पद 2019, 09:06

3 जवाब

सबसे बढ़िया उत्तर

जब फ़ंक्शन चलता है, तो एक ध्वज सेट करें जो 1 सेकंड के बाद रीसेट हो जाता है:

let clickAllowed = true;
let score = 0;

function increaseCount() {
  if (!clickAllowed) {
    return;
  }
  score++;
  clickAllowed = false;
  setTimeout(() => {
    clickAllowed = true;
  }, 1000);
}
let clickAllowed = true;
let score = 0;

function increaseCount() {
  if (!clickAllowed) {
    return;
  }
  score++;
  count.textContent = score;
  clickAllowed = false;
  setTimeout(() => {
    clickAllowed = true;
  }, 1000);
}
<button onclick="increaseCount()">click</button>
<div id="count">0</div>
7
CertainPerformance 9 पद 2019, 09:08

यदि अंतिम क्लिक के बाद एक सेकंड बीत चुका है तो वेतन वृद्धि की अनुमति दें:

let timeSinceLastClick;
let score = 0;

function increaseCount() {
  if (
  !timeSinceLastClick 
  || (timeSinceLastClick < Math.floor(Date.now() / 1000))
  ) {
    score++;
    timeSinceLastClick = Math.floor(Date.now() / 1000)
  }
}
0
Jackson Kamya 9 पद 2019, 09:21
var score = 0;
isClicked = false;

function incrementCount() {
  if (isClicked){
    return;
  }

  score++;
  isClicked = true;

  setTimeout(() => {
    isClicked = false;
  }, 1000)
}
0
Norbert 9 पद 2019, 10:36