html代码如下:
<div id="head"> <div class="navigation"> <ul class="cont"> <h2>主题市场</h2> <li><a class="hot" href="#">女装</a></li> <li><a class="n" href="#">家电</a></li> </ul> </div> <div>
js代码如下:
/*驱动函数*/
function addLoadEvent(func) {
var oldonload = window.onload; if(typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); }; } } addLoadEvent(Jump);
function Jump() {
/*获取元素*/ var oHead = document.getElementById('head'); var h3 = oHead.getElementsByClassName('cont'); var aHot = oHead.getElementsByClassName('hot'); var aN = oHead.getElementsByClassName('n'); var arr = []; var timer = null; //定义一个空对象 //遍历所有含有指定类名的元素,推入数组 for(var i=0; i<aHot.length; i++){ arr.push(aHot[i]); } for(var i=0; i<aN.length; i++){ arr.push(aN[i]); } h3.onmouseover = jump();
/*跳动功能函数*/ function jump() { var flag = true;
/*定时器*/ timer = setInterval (function() { if (flag) { for(var i=0; i<aHot.length; i++) { arr[i].style.background = 'url(hot) no-repeat right 2px'; } for(var i=aHot.length-1; i<arr.length; i++) { arr[i].style.background = 'url(n) no-repeat right 2px'; } flag = false; } else { for(var i=0; i<aHot.length; i++) { arr[i].style.background = 'url(hot) no-repeat right top'; } for(var i=aHot.length-1; i<arr.length; i++) { arr[i].style.background = 'url(n) no-repeat right top'; } flag = true; } },3000); } }
setTimeout
定义和用法: setTimeout()方法用于在指定的毫秒数后调用函数。
语法: setTimeout( func , timer)
参数: func:要调用的函数后要执行的 JavaScript 函数。timer:在执行代码前需等待的毫秒数。
提示: setTimeout() 只执行 func 一次。如果要多次调用,请使用 setInterval()。
setInterval
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。该方法会不停地调用函数,直到调用 clearInterval() 或窗口被关闭,其返回的 ID 值可用作 clearInterval() 方法的参数。
语法: setInterval(func , timer)
参数: func 必需。要调用的函数或要执行的代码串。millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。
返回值: 一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。
setTimeout和setinterval的主要区别是:
setTimeout只运行一次,也就是说设定的时间到后就触发运行指定代码,运行完后即结束。如果运行的代码中再次运行同样的setTimeout命令,则可循环运行。(即 要循环运行,需函数自身再次调用 setTimeout())
setinterval是循环运行的,即每到设定时间间隔就触发指定代码,如果队列中有其它函数等待执行,则等待其它函数执行完了才进行本次循环,这时,时间间隔就不是设定的时间间隔。这是真正的定时器。
setinterval使用简单,而setTimeout则比较灵活,可以随时退出循环,而且可以设置为按不固定的时间间隔来运行。