當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法
生活随笔
收集整理的這篇文章主要介紹了
js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
setTimeout()在js類中的使用方法
setTimeout (表達式,延時時間)
setTimeout(表達式,交互時間)
延時時間/交互時間是以豪秒為單位的(1000ms=1s)
setTimeout 在執(zhí)行時,是在載入后延遲指定時間后,去執(zhí)行一次表達式,僅執(zhí)行一次
setTimeout 在執(zhí)行時,它從載入后,每隔指定的時間就執(zhí)行一次表達式
1,基本用法:執(zhí)行一段代碼:
var i=0;
setTimeout("i+=1;alert(i)",1000);
執(zhí)行一個函數(shù):
var i=0;
setTimeout(function(){i+=1;alert(i);},1000);
//注意比較上面的兩種方法的不同。下面再來一個執(zhí)行函數(shù)的:
var i=0;
function test(){i+=1;alert(i);
}
setTimeout("test()",1000);
也可以這樣:
setTimeout(test,1000);
總結(jié):
setTimeout的原型是這樣的:
iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])setTimeout有兩種形式
setTimeout(code,interval)setTimeout(func,interval,args)
其中code是一個字符串func是一個函數(shù).
注意"函數(shù)"的意義,是一個表達式,而不是一個語句.比如你想周期性執(zhí)行一個函數(shù)
function a(){//...}
可寫為
setTimeout("a()",1000)
或者
setTimeout(a,1000)
這里注意第二種形式中,是a,不要寫成a(),切記!!!展開來說,不管你這里寫的是什么,如果是一個變量,一定是一個指向某函數(shù)的變量;如果是個函數(shù),那它的返回值就 要是個函數(shù)
var i=0;function xilou(){i+=1;if(i>10){alert(i);return;}setTimeout("xilou()",1000);//用這個也可以//setTimeout(xilou,1000);}
3,在類中使用setTimeout終于到正題了,其實在類中使用大家遇到的問題都是關(guān)于this的,只要解決了這個this的問題就萬事無憂了。呵呵。讓我們來分析一下:
function xilou(){this.name="xilou";this.sex="男";this.num=0;}xilou.prototype.count=function(){this.num+=1;alert(this.num);if(this.num>10){return;}//下面用四種方法測試,一個一個輪流測試。setTimeout("this.count()",1000);//A:當(dāng)下面的x.count()調(diào)用時會發(fā)生錯誤:對象不支持此屬性或方法。setTimeout("count()",1000);//B:錯誤顯示:缺少對象setTimeout(count,1000);//C:錯誤顯示:'count'未定義//下面是第四種var self=this;setTimeout(function(){self.count();},1000);//D:正確}var x=new xilou();x.count();
錯誤分析:A:中的this其實指是window對象,并不是指當(dāng)前實例對象B:和C:中的count()和count其實指的是單獨的一個名為count()的函數(shù),但也可以是window.count(),因為window.count()可以省略為count()D:將變量self指向當(dāng)前實例對象,這樣js解析引擎就不會混肴this指的是誰了。
話說回來,雖然我們知道setTimeout("this.count()",1000)中的this指的是window對象,但還是不明白為什么會是window對象^_^(有點頭暈...)那我們可以想象一下這個setTimeout是怎樣被定義的:setTimeout是window的一個方法,全稱是這樣的:window.setTimeout()那應(yīng)該是這樣被定義的: window.setTimeout=function(vCode, iMilliSeconds [, sLanguage]){//.....代碼return timer//返回一個標(biāo)記符}所以當(dāng)向setTimeout()傳入this的時候,當(dāng)然指的是它所屬的當(dāng)前對象window了。 計時器setTimeout()與setInterval()是原生JS很重要且用處很多的兩個方法, 但很多人一直誤以為是相同的功能: 間隔時間重復(fù)執(zhí)行傳入的句柄函數(shù). 但實際上, 并非如此, 既然JS給出了兩個不同的命名, 肯定有其迥異之處.先來看看兩者JS手冊及英文詞典上的解釋:JS手冊?setTimeout() : 用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達式;英文釋義?timeout() : 超時;暫時休息;工間休息;JS手冊?setInterval() : 按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達式. 會不停地調(diào)用函數(shù),直到 clearInterval() 被調(diào)用或窗口被關(guān)閉;英文釋義?interval() : 間隔;間距;幕間休息;不難看出, 只要我們仔細(xì)體會JS手冊及命名釋義, 就能很容易的區(qū)分開兩者的區(qū)別. 簡單的說, 兩才的區(qū)別在于, setTimeout()方法是在等待指定時間后執(zhí)行函數(shù), 且只執(zhí)行一次傳入的句柄函數(shù). setInterval()方法是每指定間隔時間后執(zhí)行一次傳入的句柄函數(shù),循環(huán)執(zhí)行直至關(guān)閉窗口或clearInterval().例子如下:
var timeout=function(){ alert('等待2s后彈出,僅此一次!在等待時間內(nèi)clearTimeout可停止執(zhí)行!')
}
var interval=function(){ alert('每2s循環(huán)彈出,直至clearInterval或關(guān)閉窗口!')
}
var input=document.getElementsByTagName('input');
var clearTimeoutFun=null;
var clearIntervalFun=null;
input[0].onclick=function(){ clearTimeoutFun=setTimeout(timeout,2000);
}
input[1].onclick=function(){ clearTimeout(clearTimeoutFun);
}
input[2].onclick=function(){ clearIntervalFun=setInterval(interval,2000);
}
input[3].onclick=function(){ clearInterval(clearIntervalFun);
}
定義和用法confirm() 方法用于顯示一個帶有指定消息和 OK 及取消按鈕的對話框。
語法confirm(message)參數(shù)描述message要在 window 上彈出的對話框中顯示的純文本(而非 HTML 文本)說明如果用戶點擊確定按鈕,則 confirm() 返回 true。如果點擊取消按鈕,則 confirm() 返回 false。在用戶點擊確定按鈕或取消按鈕把對話框關(guān)閉之前,它將阻止用戶對瀏覽器的所有輸入。在調(diào)用 confirm() 時,將暫停對 JavaScript 代碼的執(zhí)行,在用戶作出響應(yīng)之前,不會執(zhí)行下一條語句。提示和注釋提示:對話框按鈕的文字是不可改變的,因此請小心地編寫問題或消息,使它適合用確認(rèn)和取消來回答。實例
<html>
<head>
<script type="text/javascript">
function disp_confirm() {
var r=confirm("Press a button")
if (r==true) {
document.write("You pressed OK!")
} else {
document.write("You pressed Cancel!")
}
}
</script>
</head>
<body>
input type="button" onclick="disp_confirm()" value="Display a confirm box" /></body>
</html>
?
總結(jié)
以上是生活随笔為你收集整理的js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UidGenerator:百度开源的分布
- 下一篇: mongodb数据库java接口,Mon