1. 程式人生 > >淘寶交互--熱點圖標跳動

淘寶交互--熱點圖標跳動

elements 退出 一次 ldo 等待 傳遞 周期性 cnblogs asc

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則比較靈活,可以隨時退出循環,而且可以設置為按不固定的時間間隔來運行。

淘寶交互--熱點圖標跳動