【问题标题】:what i have to add in javascript to make it how i what [duplicate]我必须在javascript中添加什么才能使它成为我的样子[重复]
【发布时间】:2021-01-22 00:27:46
【问题描述】:

如果在不到 1 分钟内按下 10 次按钮会关闭,但如果在 1 分钟内未按下则继续计数,我需要添加什么?

function buttonClicked() {
  if (totalCount + accCounter > 9) {
    document.getElementById("btn").disabled = true;
  }
}


document.getElementById('btn').onclick = function() {
  upClickCounter();
  buttonClicked()
}

function upClickCounter() {
  const clickCounter = document.getElementById("clicker");
  const totalClickCounter = document.getElementById('totalCounter');

  accCounter++;
  clickCounter.children[0].innerText = '+' + accCounter;
  totalClickCounter.innerText = totalCount + accCounter;

}

let accCounter = 0;
let totalCount = 0;
<button id="btn">Click me</button>

<div id="clicker">
  <span></span>
</div>
<div id="totalCounter"></div>

【问题讨论】:

  • 听起来您需要一个setTimeout() 电话,但您想要实现的目标的描述并不是很清楚。
  • 同意,buttonClicked 功能让我很反感。
  • 该描述没有向我描述 setTimeout - 这将在一分钟后禁用该按钮,因此无法单击它。 “继续计数它在 1 分钟内未按下” 行可能表示 1 分钟后的任何点击都将被忽略。所以取决于你真正想要什么 - 阻止点击或忽略点击(1分钟后)
  • 在加载(或“开始”)时将变量设置为开始时间,当它被点击时,检查当前时间是否比开始时间> 1分钟。
  • 谢谢大家,我想要一个按钮,如果在不到 1 分钟内按下 10 次,它会关闭但继续计数(如果在 1 分钟内没有按下 10 次)

标签: javascript html jquery css


【解决方案1】:

setTimeout(countOver, 10000);  //set for 10 seconds

function countOver(){
  document.getElementById('btn').disabled=true
}



function buttonClicked() {
  if (totalCount + accCounter > 9) {
    document.getElementById("btn").disabled = true;
  }
}


document.getElementById('btn').onclick = function() {
  upClickCounter();
}

function upClickCounter() {
  const clickCounter = document.getElementById("clicker");
  const totalClickCounter = document.getElementById('totalCounter');

  accCounter++;
  clickCounter.children[0].innerText = '+' + accCounter;
  totalClickCounter.innerText = totalCount + accCounter;

}

let accCounter = 0;
let totalCount = 0;
<button id="btn">Click me</button>

<div id="clicker">
  <span></span>
</div>
<div id="totalCounter"></div>

【讨论】:

    【解决方案2】:

    您需要setTimeout。它接受一个回调函数和一个以毫秒为单位的计时器。我更新了upClickCounter,添加了禁用按钮的行,然后更新了setTimeout,它将在 1 分钟(60,000 毫秒)后重新启用按钮。

    编辑:

    我想我明白你想要什么,只是想知道为什么,但这应该符合你的描述。

    let accCounter = 0;
    let totalCount = 0;
    let lessThanOneMinute = true;
    
    function upClickCounter(event) {
        const clickCounter = document.getElementById("clicker");
        const totalClickCounter = document.getElementById('totalCounter');
        accCounter++;
        clickCounter.children[0].innerText = '+' + accCounter;
        totalClickCounter.innerText = totalCount + accCounter;
    
        // If the click count is greater or equal to 10 and the lessThanOneMinute is still true, disable the button
        if (accCounter >= 10 && lessThanOneMinute) { event.target.disabled = true; }
    }
    
    document.getElementById('btn').onclick = upClickCounter;
    
    setTimeout(() => { lessThanOneMinute = false }, 60000); // the lessThanOneMinute variable will become false in one minute
    

    【讨论】:

    • 谢谢,但我想要一个按钮,如果在不到 1 分钟的时间内按下 10 次就会关闭但继续计数(如果在 1 分钟内没有按下 10 次)?
    • 我更新了答案。我希望这能为您指明正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2011-05-23
    • 2015-07-31
    • 2019-09-20
    相关资源
    最近更新 更多