这里的aa不是全局的。因此下面直接调用的那个没执行。方法是将aa的定义,挪到setInterval外面,setInterval(aa,1000),下面也在onload里调用aa(),应该就可以了。
另外,javascript的计时不是很准,所以你会发现秒数有可能会跳,比如,当前秒是1,毫秒数是999,下次执行是1000毫秒后,但有可能是1001毫秒才执行,所以直接跳到3秒了,解决的办法是将刷新频率调高,比如间隔为500毫秒,这样就不会有跳秒的现象。但还会有秒的变化与实际不符的感觉,调整到200-250左右,人就基本感觉不出来了。
我告诉你我的思想吧:你在触发事件的时候写一个定时器,定时器设置一秒后执行,如果再次触发时定时器还没执行则关闭清空此定时器再执行一次这个定时器。 如你输入1的时候触发定时器,你输入2的时候是在输入1的后小于1秒钟,则输入2时触发事件为关闭清空上一个定时器,再开一次, 输入3时同理, 如后面没跟输入触发时间则执行3时触发的定时器。
JS:setTimeout("这里写你等待1秒后执行的函数名",1000)
例:
function showHello()
{
document.write("你好!")
}
setTimeout("showHello()",1000)
可以这样:
var menu=getid("menu")
var li=gettag("li",menu)
for(var i=0i<li.lengthi++){
li[i].onmouseover=function(){
if(this.className.indexOf("show")<0)
{
setTimeout("showHello(this)",1000)
}
}
li[i].onmouseout=function(){
$(this).removeClass("show")
}
}
function showHello(obj)
{
$(obj).addClass("show")
}