Javascript 我想在不重新加载的情况下重新启动事件。无限次或多次

Javascript 我想在不重新加载的情况下重新启动事件。无限次或多次,javascript,Javascript,在美国大约是星期六的10:00到13:00 英格兰似乎在周六18点左右 我认为这个时间是最好的,所以我现在就发布了 我用的是不熟悉的英语句子,所以如果出了问题,我很抱歉 使用下面的代码,我成功地从一个键操作开始,并在一个click事件中停止 但是,除非重新加载屏幕,否则事件不会继续 // "Alt" + "Shift" + "↓" automatic scrolling $(function() { var m; $(windo

在美国大约是星期六的10:00到13:00

英格兰似乎在周六18点左右

我认为这个时间是最好的,所以我现在就发布了

我用的是不熟悉的英语句子,所以如果出了问题,我很抱歉

使用下面的代码,我成功地从一个键操作开始,并在一个click事件中停止

但是,除非重新加载屏幕,否则事件不会继续

// "Alt" + "Shift" + "↓" automatic scrolling
$(function() {
  var m;
  $(window).keydown(function(e){
    if (e.altKey && e.shiftKey && e.keyCode == 40) {
      if(!m){
        m=setInterval(function(s){
          scrollBy(0,s||1);
        },35);
      }
    }
  });
  $(document).on('click', function() {
    //location.reload(true);
    clearInterval(m);
  });
});
无用的 location.reload(true); 判决, .on('单击',函数(){ 我试着写,但没用,因为每次点击屏幕都会重新加载

如果可能,我希望在不重新加载的情况下停止屏幕,然后重新启动事件并再次停止。如何启用此操作

请教我

操作环境 视窗10 铬64位
您只需在
单击事件处理程序中
m=undefined

当您在这样的条件下使用变量时,Javascript将计算它的“真实性”。“falsey”值是未定义的、null、零、空字符串、NaN,当然还有布尔值false。其他所有内容都是真实的,包括
setInterval
返回的句柄(在浏览器中为非零整数)您将其分配给m。清除间隔不会重置变量,您需要自己进行重置

我还建议您避免使用jQuery,因为在这种情况下它对您没有多大帮助-您的整个代码段至少可以使用vanilla JS和现代功能重写。例如:

/“Alt”+“Shift”+“↓" 自动滚动
;(() => {
让我
常量scrollBy=()=>{
console.log('称为scrollBy()')
}
window.addEventListener('keydown',e=>{
if(m==undefined&&e.altKey&&e.shiftKey&&e.keyCode==40){
m=setInterval(s=>scrollBy(0,s | | 1),35)
}
})
document.addEventListener('click',()=>{
净距(m)
m=未定义
})

})()
答案肯定,+1。希望你不介意,我补充了一点原因解释。@JaredSmith一点也不介意。谢谢你的帮助!谢谢你的回答。  m=未定义; 只需将这段代码添加到末尾,我就能够用JQuery实现所需的功能。非常感谢。我只是对JS很好奇,所以很抱歉我一点都不了解,但有一些神秘的东西。它似乎是一个“箭头函数”,  ; (() => {  我真的不明白这个描述的意思。那是什么?再次谢谢你。谢谢你。@appren\tice如果你还没有得到它就可以了!我先把
m=undefined
放在前面,以防万一你没有;)。大多数情况下,箭头函数的工作原理相同,只是看起来与传统函数有点不同。您不需要键入太多内容,因为许多部分都是可选的,例如括号或
返回值
。这有点过于简单化,但我想,首先了解它们会非常有效。有关更多信息,请参阅