悬停时在Jquery中重复调用自定义函数的最简单方法?

悬停时在Jquery中重复调用自定义函数的最简单方法?,jquery,function,timer,delay,intervals,Jquery,Function,Timer,Delay,Intervals,我有一个名为goRight()的函数,当我单击名为“goRight”的div时,它会执行一些操作 我希望这样,当我将鼠标悬停在div“goright”上时,只要我一直悬停,它就会反复调用该函数(有一个小的延迟),然后什么也不做,一旦我将鼠标移开,它就会停止 我已经尝试过setInterval,但我认为我误解了它的工作原理,所以它无法正常工作 谢谢。不使用jQuery,但这对我来说很有效,方法应该类似 <script type="text/javascript" charset="utf-8

我有一个名为goRight()的函数,当我单击名为“goRight”的div时,它会执行一些操作

我希望这样,当我将鼠标悬停在div“goright”上时,只要我一直悬停,它就会反复调用该函数(有一个小的延迟),然后什么也不做,一旦我将鼠标移开,它就会停止

我已经尝试过setInterval,但我认为我误解了它的工作原理,所以它无法正常工作


谢谢。

不使用jQuery,但这对我来说很有效,方法应该类似

<script type="text/javascript" charset="utf-8">
  var doingStuff = false;
  function doStuff() {
    if (doingStuff) {
      document.getElementById('stuff').innerHTML += '.';
      setTimeout(doStuff, 100);
    }
  }
</script>

<p onmouseover="doingStuff = true; doStuff()" onmouseout="doingStuff = false">
  Mouseover to do stuff
</p>

<p id="stuff">Stuff: </p>

var doingStuff=false;
函数doStuff(){
如果(做事情){
document.getElementById('stuff').innerHTML+=';
设置超时(doStuff,100);
}
}

鼠标悬停做事情

素材:

这将在您悬停时每隔100毫秒向文档添加一个


基本上,在鼠标悬停时将布尔值设置为true,在鼠标悬停时将布尔值设置为false。除非变量为true,否则不要安排下一次调用。此外,除非您需要,否则您不会每隔100毫秒调用一个函数。这意味着在您悬停之前不会发生任何事情,请将var设置为true并启动重复函数。

不使用jQuery,但这对我来说很有效,方法应该类似

<script type="text/javascript" charset="utf-8">
  var doingStuff = false;
  function doStuff() {
    if (doingStuff) {
      document.getElementById('stuff').innerHTML += '.';
      setTimeout(doStuff, 100);
    }
  }
</script>

<p onmouseover="doingStuff = true; doStuff()" onmouseout="doingStuff = false">
  Mouseover to do stuff
</p>

<p id="stuff">Stuff: </p>

var doingStuff=false;
函数doStuff(){
如果(做事情){
document.getElementById('stuff').innerHTML+=';
设置超时(doStuff,100);
}
}

鼠标悬停做事情

素材:

这将在您悬停时每隔100毫秒向文档添加一个


基本上,在鼠标悬停时将布尔值设置为true,在鼠标悬停时将布尔值设置为false。除非变量为true,否则不要安排下一次调用。此外,除非您需要,否则您不会每隔100毫秒调用一个函数。这意味着在您悬停之前不会发生任何事情,请将var设置为true并启动重复函数。

我们可以看一下您的setInterval代码吗?我将setInterval代码合并。我在等一个新主意。这太让人头疼了。我们能看看你的setInterval代码吗?我把setInterval代码放进去了。我在等一个新主意。这太让人头痛了。这种方法似乎是合理的。jQuery可以很好地解决这个问题。这是一种工作方式,但是doStuff在每个鼠标器上至少执行两次,这并不理想。用一些条件简单地解决问题?@Hamid,我已经更新了我的答案,以防止做两次事情。它仍然会被调用两次,但是移动if语句会阻止它实际执行任何实际工作。谢谢。我昨天自己做了更改,修改条件不是问题。但我现在已经接受了这个答案,因为它也符合我纠正它的方式。非常感谢您给出了清晰的答案和后续的修复。这种方法似乎是合理的。jQuery可以很好地解决这个问题。这是一种工作方式,但是doStuff在每个鼠标器上至少执行两次,这并不理想。用一些条件简单地解决问题?@Hamid,我已经更新了我的答案,以防止做两次事情。它仍然会被调用两次,但是移动if语句会阻止它实际执行任何实际工作。谢谢。我昨天自己做了更改,修改条件不是问题。但我现在已经接受了这个答案,因为它也符合我纠正它的方式。非常感谢您的明确回答和后续修复。