js鼠标移入事件,限制执行次数

怎么限制js时间,在2秒内鼠标多次移入只执行一次... 怎么限制js时间,在2秒内鼠标多次移入只执行一次 展开
 我来答
德缘哥哥
2015-07-13 · TA获得超过217个赞
知道小有建树答主
回答量:193
采纳率:100%
帮助的人:67.3万
展开全部
<!DOCTYPE HTML>
<html>
<head>
    <title>TestMouse</title>
    <meta charset="utf-8"/>
</head>
<style>
    body{
        background-color: gray;
    }
    .rect{
        position: relative;
        display: block;
        width: 100px;
        height: 100px;
        background-color: red;
        margin: 0 auto;
        cursor: pointer;
        -moz-border-radius: 12px;
        -webkit-border-radius: 12px;
        border-radius: 12px;
        border:3px solid yellow;
    }
    .timeBox{
        position: relative;
        display: block;
        margin:10px auto;
        width: 300px;
        height: 35px;
        text-align: center;

    }
</style>
<body>
<div class="rect" id="rect" onclick="setCount()"></div>
<input type="text"  class="timeBox" id="timeBox" disabled/>

<script>
    /*  主要思路是:
        一开始时标签上是有onclick属性的,然后点击之后进入方法,
        便把onclick事件移除,且
        方法中有setTimeout函数,设置时间的时间到期之后便会执行,
        执行的功能就是给标签添加onclick事件,那么点击就会又有效果了
    */
   var rect=document.getElementById("rect");
   var timer=1;
   var clickCount=0;
   var runCount=0;
   //addEvnetListner有兼容性问题,此处我只针对Mozilla系列
   rect.addEventListener("click",function(){clickCount++;},false);
    function setCount(){
        rect.onclick=null;
        timer=setTimeout(timeOver,2000);
    }
    function timeOver(){
        runCount++;
        rect.onclick=setCount;
        document.getElementById("timeBox").value="点击次数:"+clickCount+" ,执行次数:"+runCount;
        //clearTimeout(timer);
    }

</script>
</body>
</html>
追问
不是click事件,是鼠标移入事件
$("#Show_g").live("mouseleave",function(){
ShowgOut(this);//调用的方法
});
移入事件是这么写的,移除不了 移入事件
追答
你只要将事件改一下就可以了:
1,rect.addEventListener("click",function(){clickCount++;},false);
这里面的click单击事件改成mouseover,注意大小写,结果:

rect.addEventListener("mouseover",function(){clickCount++;},false);
2,rect.onclick=setCount;这儿的onclick改成onmouseover,结果:
rect.onmouseover=null;
3,就是下面 显示为点击次数的说明就要改成,鼠标经过次数咯,结果:

document.getElementById("timeBox").value="鼠标进过次数:"+clickCount+" ,执行次数:"+runCount;
帮助_li
2015-07-13 · TA获得超过2140个赞
知道大有可为答主
回答量:1288
采纳率:65%
帮助的人:696万
展开全部

使用时间差。

比如:

var start=new Date().getTime();
var test=function(){
   var now=new Date().getTime();
   if(now-start>2000){
      //console.log('超过2秒');
      start=now;
   }
};

test();
setTimeout(test,2100);
追问
你这个是延迟执行,我要的是2秒内移入多次只执行一次
追答
一个道理啊,第一次移入时执行,再移入时,如果时间不大于2s则不执行,不正好满足你的需求么
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式