一个JS问题,有兴趣的哥们可以一起讨论下
在做一个特效,就是鼠标滑过一张小图的时候,然后触发一个onmouseover事件,然后去通过Ajax去请求一张图片,然后显示出来。
刚开始是这样的思路,实施之后,发现服务器的负载过高,原因是用户的鼠标随便滑过几张图就去请求,有很多时候是客户不需要的。
后来我想到了,用定时事件:
ds = window.setInterval('ajax(id, ds)',1200)
注:ajax是请求ajax的数据函数
之后问题出现了,就是他不断的自动去请求每隔1.2s就请求一次。比之前更糟糕了
于是我想出一个办法设置定时执行次数,默认为0,执行一次之后,次数+1,然后把这个值传递给ajax请求的参数里面,然后做判断:
function ajax(id,ds)
{
var imgpath = ''
$.get("/ajax.php",{id:id},function(data){
//这里的具体的业务逻辑省略
//记录次数
onmouseOverCuont +=1;
},
"text"
);
}
那样子就能解决这个问题。
鼠标移走之后就触发onmouseout事件的时候,执行:
onmouseOverCuont=0;window.clearInterval(ds);
以上代码在IE9, 火狐,chrome 浏览器没有任何问题。
但是在IE9以下,或者国产的那些IE内核的浏览器都会出现:
ds 未定义!
各位亲朋好友,帮忙看看!
祝愿大家新年快乐!
还有一小段代码是在网上找的,小弟才疏学浅,不明白,贴上来大伙儿给讲讲:
<html>
<head>
<script type="text/javascript">
function test(_obj)
{
var iV = parseInt(_obj.value);
_obj.value = iV+1;
window.setTimeout(function(_obj2){return function(){test(_obj2)}}(_obj),10);
_obj = null;
};
</script>
</head>
<body onload="test(document.getElementById('txt1'))">
<input type="text" id="txt1" value="0" />
</body>
</html>
ajax
html
javascript
------解决方案--------------------
说的不错,不过出现未定义的情况,直接在开始的时候 var ds=0; 即可。
祝愿楼主好运!