Javascript 如何通过按住按钮增加js中的变量? 点击器 var得分=1; } 函数递增1() { 分数=分数+1; document.getElementById(“clickmebtn”)。值=分数; }

Javascript 如何通过按住按钮增加js中的变量? 点击器 var得分=1; } 函数递增1() { 分数=分数+1; document.getElementById(“clickmebtn”)。值=分数; },javascript,html,Javascript,Html,我可以使用纯JavaScript使保留按钮变量增加吗?我想增加名为score的变量。我相信你是在跳这样的东西- let得分=0; 让状态=假; const scorel=document.querySelector(“#score”); const btnEl=document.querySelector('#btn'); 设区间=null; btnEl.addEventListener('mousedown',e=>{ 状态=真; 更新(); }); btnEl.addEventListen

我可以使用纯JavaScript使保留按钮变量增加吗?我想增加名为score的变量。

我相信你是在跳这样的东西-

let得分=0;
让状态=假;
const scorel=document.querySelector(“#score”);
const btnEl=document.querySelector('#btn');
设区间=null;
btnEl.addEventListener('mousedown',e=>{
状态=真;
更新();
});
btnEl.addEventListener('mouseup',e=>{
状态=假;
更新();
});
常数更新=()=>{
如果(状态){
间隔=设置间隔(()=>{
分数++;
scorel.innerHTML=分数;
}, 100);    
}否则{
if(间隔)clearInterval(间隔);
}
}
0
增量
  • onmousedown
    上,创建一个函数以每n毫秒调用一次函数
  • onmouseup
    上,删除该间隔!()
  • var区间=null;
    var按钮=document.querySelector(“clickmebtn”);
    var得分=0;
    button.onmousedown=函数(){
    addCount();//立即调用函数
    interval=setInterval(addCount,500);//开始每500毫秒调用一次
    };
    button.onmouseup=函数(){
    clearInterval(interval);//如果释放按钮,则清除间隔
    };
    //将1添加到计数器并设置为按钮值
    函数addCount(){
    button.value=++分数;
    }
    
    点击器
    




    我可以通过将
    onmousedown
    事件更改为[start an interval][1]来实现这一点,它会反复调用
    increase1()
    方法,直到用
    onmouseup
    清除[interval][2]

    您可以使用忙循环(例如,
    while(true)
    )执行此操作,但这会阻塞UI线程,并且页面将变得无响应。使用间隔可以避免这种情况

    您的示例已更新为使用此方法:

    var得分=1;
    函数递增1(){
    分数=分数+1;
    document.getElementById(“clickmebtn”)。值=分数;
    }
    var增量延迟=10;//每10毫秒增加一次分数(防止繁忙循环阻塞UI线程)
    var区间=null;
    函数开启计数器(){
    间隔=设置间隔(增加1,增加延迟);
    }
    功能关闭计数器(){
    间隔时间;
    }
    
    




    使用setTimeout设置一个间隔,并在onmousedown事件侦听器中循环该间隔。我在onmouseup中使用了一个单独的侦听器来清除超时

    您可以在下面的setTimeout中更改时间,以更改分数增加之间的间隔

    var得分=0;
    无功定时器;
    函数递增1()
    {
    计时器=设置超时(函数(){
    分数=分数+1;
    document.getElementById(“clickmebtn”)。值=分数;
    增加1();
    }, 1000);
    }
    函数停止(){
    清除超时(计时器);
    }
    
    点击器
    




    您可以为“onmousedown”添加一个事件侦听器,然后为“onmousedup”添加另一个事件侦听器。这是否回答了您的问题?如果这解决了你的问题,那么请接受答案,这样其他人将来可以得到帮助@ZielonyXD
    <html>
    <head>
    <link rel="stylesheet" href="styles.css">
    <title>Clicker</title>
    <script type="text/javascript">
    
        var score = 1;
    }
    
    function increase1()
    {
        score=score+1;
        document.getElementById("clickmebtn").value = score;
    }
    </script>
    </head>
    <body>
    
    <div id="container"><center><div id="spacer"></div><div id="btiptsish">
    <input id="clickmebtn" type="submit" value="0" onmousedown="increase1()" onmouseup="increase1()"><br><br><br><br></r></div></center>
    </div>
    </body>
    </html>