window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。
setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。
setInterval方法则是表示间隔一定时间反复执行某操作。
如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行(setTimeout( ) 預設只是執行一次, 但我們可以使用一個循環方式, 使到一個setTimeout( ) 再啟動自己一次, 就會使到第二個 setTimeout( ) 執行, 第二個又啟動第三個, 這樣循環下去, 這 setTimeout( ) 就會不斷執行)。如果要清除计数器需要根据使用的方法不同,调用不同的清除方法:
setTimeout:



















setInterval:



















setInterval函数比较奇怪,它只认识全局变量,不认识局部变量,上面的haha和hehe没用var来修饰,所以他们是全局变量,你传过来的参数是局部变量,所以它不认识,setInterval的第一个参数除了可以是string之外,也可以就是一个function,是字符串的话它就把这个字符串当作代码来执行一遍,如果是function的话,它就调用这个函数,但这样有一个问题,你没法给这个function 传参数
比如setInterval("f()", 1000)和setInterval(f, 1000),他们的作用是一样的,但是如果函数f需要一个参数,前面的你可以写成setInterval("f(1)", 1000),而后面的那种方法就行不通了,但是前面的那种形式你的参数必须是一个全局的,所以也不是很爽,可以把后面的那种形式变通一下,让它支持参数,因此我写了一个函数bind,它返回一个函数









注意函数变量的方法apply的第二个参数要求是一个数组,那么你的
highlighting=setInterval("highlightit(imgHIgh)",100);
可以写成这样
highlighting=setInterval(bind(highlightit, [imgHIgh]), 100);
这样你就不用担心局部还是全局的问题了,hoho