window對象有以下方法:??
open???
close???
alert???
confirm???
prompt???
setTimeout???
clearTimeout???
setInterval???
clearInterval???
moveBy???
moveTo???
resizeBy???
resizeTo???
scrollBy???
scrollTo???
find???
back???
forward???
home???
stop???
print???
blur???
focus???
captureEvent???
enableExternalCapture???
disableExternalCapture???
handleEvent???
releaseEvent???
routeEvent???
scroll???
1. open方法??
語法格式:??
window.open(URL,窗口名稱,窗口風格)??
功能:打開一個新的窗口,并在窗口中裝載指定URL地址的網頁。??
說明:??
open方法用于打開一個新的瀏覽器窗口,并在新窗口中裝入一個指定的URL地址??
;???
open方法在打開一個新的瀏覽器窗口時,還可以指定窗口的名稱(第二個參數);???
open方法在打開一個新的瀏覽器窗口時,還可以指定窗口的風格(第三個參數),??
窗口風格有以下選項,這些選項可以多選,如果多選,各選項之間用逗號分隔:???
toolbar:指定窗口是否有標準工具欄。當該選項的值為1或yes時,表示有標準??
工具欄,當該選項的值為0或no時,表示沒有標準工具欄;???
location:指定窗口是否有地址工具欄,選項的值及含義與toolbar相同;???
directories:指定窗口是否有鏈接工具欄,選項的值及含義與toolbar相同;???
status:指定窗口是否有狀態欄,選項的值及含義與toolbar相同;???
menubar:指定窗口是否有菜單,選項的值及含義與toolbar相同;???
scrollbar:指定當前窗口文檔大于窗口時是否有滾動條,選項的值及含義與??
toolbar相同;???
resizable:指定窗口是否可改變大小,選項的值及含義與toolbar相同;???
width:以像素為單位指定窗口的寬度,已被innerWidth取代;???
height:以像素為單位指定窗口的高度,已被innerHeight取代;???
outerWidth:以像素為單位指定窗口的外部寬度;???
outerHeight:以像素為單位指定窗口的外部高度;???
left:以像素為單位指定窗口距屏幕左邊的位置;???
top:以像素為單位指定窗口距屏幕頂端的位置;???
alwaysLowered:指定窗口隱藏在所有窗口之后,選項的值及含義與toolbar相同??
;???
alwaysRaised:指定窗口浮在所有窗口之上,選項的值及含義與toolbar相同;???
dependent:指定打開的窗口為當前窗口的一個子窗口,并隨著父窗口的關閉而??
關閉,選項的值及含義與toolbar相同;???
hotkeys:在沒有菜單欄的新窗口中設置安全退出的熱鍵,選項的值及含義與??
toolbar相同;???
innerHeight:設定窗口中文檔的像素高度;???
innerWidth:設定窗口中文檔的像素寬度;???
screenX:設定窗口距離屏幕左邊界的像素長度;???
screenY:設定窗口距離屏幕上邊界的像素長度;???
titleBar:指明標題欄是否在新窗口中可見,選項的值及含義與toolbar相同;???
z-look:指明當窗口被激活時,不能浮在其它窗口之上,選項的值及含義與??
toolbar相同。???
open方法返回的是該窗口的引用。???
小技巧:該方法經常用于在打開一個網頁時自動打開另一個窗口。??
例6-2-1:編制一個小程序,它用于在打開當前窗口時自動打開另一個窗口,要??
求該窗沒有標準工具欄、地址欄、鏈接工具欄、菜單欄,但有狀態欄,窗口中打??
開的網頁地址為:http://www.dlrtvu.edu.cn。??
2. close方法??
語法格式:??
window.close()??
功能:close方法用于自動關閉瀏覽器窗口。??
?? 3. alert方法??
語法格式:??
window.alert(提示字符串)??
功能:彈出一個警告框,在警告框內顯示提示字符串文本。??
?? 4. confirm方法??
語法格式:??
window.confirm(提示字符串)??
功能:顯示一個確認框,在確認框內顯示提示字符串,當用戶單擊“確定”按鈕??
時該方法返回true,單擊“取消”時返回false。??
?? 5. prompt方法??
語法格式:??
window.prompt(提示字符串,缺省文本)??
功能:顯示一個輸入框,在輸入框內顯示提示字符串,在輸入文本框顯示缺省文??
本,并等待用戶輸入,當用戶單擊“確定”按鈕時,返回用戶輸入的字符串,當??
單擊“取消”按鈕時,返回null值。??
?? 6. setTimeout方法??
語法格式:??
window.setTimeout(代碼字符表達式,毫秒數)??
功能:定時設置,當到了指定的毫秒數后,自動執行代碼字符表達式。??
7. clearTimeout方法??
語法格式:??
window.clearTimeout(定時器)??
功能:取消以前的定時設置,其中的參數是用setTimeout設置時的返回值。??
?? 8. setInterval方法??
語法格式:??
window.setInterval(代碼字符表達式,毫秒數)??
功能:設定一個時間間隔后(第二個參數),反復執行“代碼字符表達式”的內容??
9. clearInterval方法??
語法格式:??
window.clearInterval(時間間隔器)??
功能:取消setInterval設置的定時。其中的參數是setInterval方法的返回值。??
10. moveBy方法??
語法格式:??
window.moveBy(水平位移量,垂直位移量)??
功能:按照給定像素參數移動指定窗口。第一個參數是窗口水平移動的像素,第??
二個參數是窗口垂直移動的像素。??
?? 11.moveTo方法??
語法格式:??
window.moveTo(x,y)??
功能:將窗口移動到指定的指定坐標(x,y)處。??
12. resizeBy方法??
語法格式:??
window.resizeBy(水平,垂直)??
功能:將當前窗口改變指定的大小(x,y),當x、y的值大于0時為擴大,小于0時??
為縮小。??
13. resizeTo方法??
語法格式:??
window.resizeTo(水平寬度,垂直寬度)??
功能:將當前窗口改變成(x,y)大小,x、y分別為寬度和高度。??
14. scrollBy方法??
語法格式:??
window.scrollBy(水平位移量,垂直位移量)??
功能:將窗口中的內容按給定的位移量滾動。參數為正數時,正向滾動,否則反??
向滾動。??
15. scrollTo方法??
語法格式:??
window.scrollTo(x,y)??
功能:將窗口中的內容滾動到指定位置。??
16.find方法??
語法格式:??
window.find()??
功能:當觸發該方法時,將彈出一個“find”(查找)對話窗口,并允許用戶在觸??
發find方法的頁面中查找一個字符串。??
注:該屬性在IE5.5及Netscape6.0中都不支持。??
17. back方法??
語法格式:??
window.back()??
功能:模擬用戶點擊瀏覽器上的“后退”按鈕,將頁面轉到瀏覽器的上一頁。??
說明:僅當當前頁面存在上一頁時才能進行該操作。??
注:IE5.5不支持該方法,Netscape6.0支持。??
18. forward方法??
語法格式:??
window.forward()??
功能:模擬用戶點擊瀏覽器上的“前進”按鈕,將頁面轉到瀏覽器的下一頁。??
說明:僅當當前頁面存在下一頁時才能進行該操作。??
注:IE5.5不支持該方法,Netscape6.0支持。??
19. home方法??
語法格式:??
window.home()??
功能:模擬用戶點擊瀏覽器上的“主頁”按鈕,將頁面轉到指定的頁面上。??
注:IE5.5不支持該方法,Netscape6.0支持。??
20. stop方法??
語法格式:??
window.stop()??
功能:模擬用戶點擊瀏覽器上的“停止”按鈕,終止瀏覽器的下載操作。??
注:IE5.5不支持該方法,Netscape6.0支持。??
21. print方法??
語法格式:??
window.print()??
功能:模擬用戶點擊瀏覽器上的“打印”按鈕,通知瀏覽器打開打印對話框打印??
當前頁。??
????????
22. blur方法??
語法格式:??
window.blur()??
功能:從窗口中移出焦點。當與focus方法合用時必須小心,因為可能導致焦點??
不斷移進移出。??
23. focus方法??
語法格式:??
window.focus()??
功能:使窗口中得到焦點。當與blur方法合用時必須小心,因為可能導致焦點不??
斷移進移出。
24. captureEvent方法??
語法格式:??
window.captureEvent(Event)?????????
window.captureEvent(事件1|事件2|...|事件n)??
功能:捕捉指定參數的所有事件。由于能夠捕獲哪些由本地程序自己處理的事件??
,所以程序員可以隨意定義函數來處理事件。如果有多個事件需要捕捉,各事件??
之間用管道符“|”隔開。可捕捉的事件類型如下:??
Event.ABORT???
Event.BLUR???
Event.CHANGE???
Event.CLICK???
Event.DBLCLICK???
Event.DRAGDROP???
Event.ERROR???
Event.FOCUS???
Event.KEYDOWN???
Event.KEYPRESS???
Event.KEYUP???
Event.LOAD???
Event.MOUSEDOWN???
Event.MOUSUEMOVE???
Event.MOUSEOUT???
Event.MOUSEOVER???
Event.MOUSEUP???
Event.MOVE???
Event.RESET???
Event.RESIZE???
Event.SELECT???
Event.SUBMIT???
Event.UNLOAD???
25. enableExternalCapture事件??
語法格式:??
window.enableExternalCapture(event)??
功能:enableExternalCapture方法用于捕捉通過參數傳入的外部事件。??
26. disableExternalCapture事件??
語法格式:??
window.disableExternalCapture()??
功能:取消enableExternalCapture方法的設置,終止對外部事件的捕捉。??
27. handleEvent事件??
語法格式:??
window.handleEvent(event)??
功能:觸發指定事件的事件處理器。??
28. releaseEvent事件??
語法格式:??
window.releaseEvent(event)??
window.releaseEvent(事件1|事件2|...|事件n)??
功能:釋放通過參數傳入的已被捕捉的事件,這些事件是由??
window.captureEvent方法設置的,可釋放的事件與captureEvent相同。??
29. routeEvent事件??
語法格式:??
window.releaseEvent(event)??
功能:把被捕捉類型的所有事件轉交給標準事件處理方法進行處理,可轉交的事??
件與captureEvent相同。??
30 scroll事件??
語法格式:??
window.scroll(X坐標,Y坐標)??
功能:將窗口移動到指定的坐標位置。??
6-2-2 window對象的屬性??
window對象具有如下屬性:??
status???
statusbar???
statusbar.visible???
defaultstatus???
location???
locationbar???
locationbar.visible???
self???
name???
closed???
frames???
frames.length???
length???
document???
history???
innerHeight???
innerWidth???
menubar???
menubar.visible???
opener???
outerHeight???
outerWidth???
pageXOffset???
pageYOffset???
parent???
personalbar???
personalbar.visible???
scrollbar???
scrollbar.visible???
toolbar???
toolbar.visible???
top???
1. status屬性??
語法格式:??
window.status=字符串??
功能:設置或給出瀏覽器窗口中狀態欄的當前顯示信息。??
小技巧:可以使用該屬性設置瀏覽器窗口狀態欄信息。??
?? 2. statusbar屬性??
語法格式:??
window.statusbar.屬性??
功能:statusbar屬性本身也是一個對象,用于訪問它自已的visible屬性從而確??
定狀態欄是否可見。??
注:IE5.5瀏覽器不支持該屬性。??
3. statusbar.visible屬性??
語法格式:??
window.statusbar.visible??
功能:檢查狀態欄是否可見,如果可見則返回true,反之返回false。??
注:IE5.5瀏覽器不支持該屬性。??
?? 4. defaultstatus屬性??
語法格式:??
window.defaultstatus[=字符串]??
功能:defaultstatus屬性值是瀏覽器窗中狀態欄的默認顯示信息。??
?? 5.location屬性??
語法格式:??
window.location=URL??
功能:給出當前窗口的URL信息或指定打開窗口的URL。??
?? 6. locationbar屬性??
語法格式:??
window.locationbar.屬性??
功能:locationbar屬性也可以看成是一個子對象,這個屬性用來獲取它自已的??
visible屬性來確定位置欄是否可見。??
到目前為止,該屬性只有一個子屬性:visible。??
注:IE5.5不支持該屬性。??
7. locationbar.visible屬性??
語法格式:??
window.locationbar.visible??
功能:返回位置欄是否可見,如果可見返回true,反之返回false。??
注:IE5.5不支持該屬性。??
8. self屬性??
語法格式:??
window.self.方法??
window.self.屬性??
功能:該屬性包含當前窗口的標志,利用這個屬性,可以保證在多個窗口被打開??
的情況下,正確調用當前窗口內的函數或屬性而不會發生混亂。??
?? 9. name屬性??
語法格式:??
window.name=名稱??
功能:返回窗口名稱,這個名稱是由window.open()方法創建新窗口時給定的。??
在javascript1.0版本中,這個屬性只能用于讀取窗口名稱,而到了??
javascript1.1版本時,可以用這個屬性給一個不是用window.open()方法創建的??
窗口指定一個名稱。??
?? 10. closed屬性??
語法格式:??
window.closed??
功能:closed屬性用于返回指定窗口的實例是否已經關閉,如果關閉,返回true??
,反之返回flase。??
11. frames屬性??
語法格式:??
window.frames["框架名稱"]??
window.frames[數值]??
功能:frames屬性是一個數組,用來存儲文檔中每一個由元素創建的子窗口(框??
架)實例,其中的下標即可以是次序號也可以是用FRAME元素的NAME屬性指定的名??
稱來得到并使用。??
12. frames.length屬性??
語法格式:??
window.frames.length??
功能:frames.length屬性用于給出文檔中子窗口(框架)實例的個數。??
13. length屬性??
語法格式:??
window.length??
功能:length屬性返回一個窗口內的子窗口數目,該屬性與??
window.frame.length屬性的值相同。??
14. document屬性??
語法格式:??
window.document.事件??
window.document.方法??
window.document.屬性??
功能:window對象的子對象document是javascript的核心對象,在腳本中遇到??
BODY元素時創建一個實例。??
15. history屬性??
語法格式:??
window.history[數值]??
window.history.方法()??
window.history.屬性??
window對象的子對象history是javascript的核心對象之一,該屬性包含了一個??
已訪問過頁面的名稱和URL的數組。??
16. innerHeight屬性??
語法格式:??
window.innerHeight=數值??
功能:返回或指定瀏覽器窗口中文檔的像素高度,這個高度不包括任何工具欄和??
組成窗口的頁面修飾高度。??
注:IE5.5不支持該屬性。??
17. innerWidth屬性??
語法格式:??
window.innerHeight=數值??
功能:返回或指定瀏覽器窗口中文檔的像素寬度,這個寬度不包括任何工具欄和??
組成窗口的頁面修飾寬度。??
注:IE5.5不支持該屬性。??
18. menubar屬性??
語法格式:??
window.menubar.屬性??
功能:menubar屬性也可以看成是一個子對象,這個屬性用來獲取它自已的??
visible屬性來確定菜單欄是否可見。??
到目前為止,該屬性只有一個子屬性:visible。??
注:IE5.5不支持該屬性。??
19. menubar.visible屬性??
語法格式:??
window.menubar.visible??
功能:menubar.visible屬性用于返回菜單欄是否可見,如果可見返回true,反??
之返回false。??
注:IE5.5不支持該屬性。??
20. opener屬性??
語法格式:??
window.opener??
window.opener.方法??
window.opener.屬性??
功能:opener屬性與打開該窗口的父窗口相聯系,當訪問子窗口中operer屬性時??
,返回的是父窗口。通過該屬性,可以使用父窗口對象中的方法和屬性。??
21. outerHeight屬性??
語法格式:??
window.outerHeight??
功能:outerHeight屬性用于訪問瀏覽器窗口的像素高度,該高度包括工具欄和??
裝飾邊的高度。??
注:IE5.5不支持該屬性。??
22. outerWidth屬性??
語法格式:??
window.outerWidth??
功能:outerWidth屬性用于訪問瀏覽器窗口的像素寬度,該寬度包括工具欄和裝??
飾邊的寬度。??
注:IE5.5不支持該屬性。??
23. pageXOffset屬性??
語法格式:??
window.pageXOffset=數值??
功能:指定瀏覽器窗口中文檔左上角在窗口中的當前水平像素位置。在利用??
moveTo移動之前,可以通過該屬性來決定是否需要移動窗口。因為該屬性返回了??
可見文檔相對整個頁面的當前位置。??
注:IE5.5不支持該屬性。??
24. pageYOffset屬性??
語法格式:??
window.pageYOffset=數值??
功能:指定瀏覽器窗口中文檔左上角在窗口中的當前垂直像素位置。在利用??
moveTo移動之前,可以通過該屬性來決定是否需要移動窗口。因為該屬性返回了??
可見文檔相對整個頁面的當前位置。??
注:IE5.5不支持該屬性。??
25. parent屬性??
語法格式:??
window.parent.frames[數值]??
window.parent.framesName??
功能:訪問各個子窗口(多框架)所在的父窗口。??
26. personalbar屬性??
語法格式:??
window.personalbar.屬性??
功能:personalbar屬性本身也是一個對象,用于訪問其自身的visible屬性來確??
定個人欄是否可見。??
注:IE5.5不支持該屬性。??
27. personalbar.visible屬性??
語法格式:??
window.personalbar.visible??
功能:確定個人欄是否可見,如果可見則返回true,反之返回false。??
注:IE5.5不支持該屬性。??
28. scrollbars屬性??
語法格式:??
window.scrollbars.屬性??
功能:scrollbars屬性本身也是一個對象,用于訪問其自身的visible屬性來確??
定滾動欄是否可見。??
注:IE5.5不支持該屬性。??
29. scrollbars.visible屬性??
語法格式:??
window.scrollbars.visible??
功能:scrollbars.visible用于確定滾動欄是否可見,如果可見則返回true,反??
之返回false。??
注:IE5.5不支持該屬性。??
30. toolbar屬性??
語法格式:??
window.toolbar.屬性??
功能:toolbar屬性本身也是一個對象,用于訪問它自已的visible屬性從而確定??
工具欄是否可見。??
注:IE5.5不支持該屬性。??
31. toolbar.visible屬性??
語法格式:??
window.toolbar.visible??
功能:toolbar.visible屬性用于檢查工具欄是否可見,如果可見則返回true,??
反之返回false。??
注:IE5.5不支持該屬性。??
32. top屬性??
語法格式:??
window.top.frames[數值]??
window.top.frameName??
window.top.方法()??
window.top.屬性??
功能:window對象的top屬性用于包含所有裝入瀏覽器的子窗口(多框架)的最頂
使用Window.open方法新建窗口
Window對象表示的是瀏覽器窗口,它有多種操作,其中一個重要的方法是open,表示新建一個窗口來打開指定頁面。例如在a.html中執行以下語句:
window.open("b.html");
則新建一個窗口打開了b.html頁面,這和在a.html頁面中用一條鏈接打開頁面的效果是一樣的:
<a href="b.html" target="_blank">b</html>
但window.open對新建窗口的樣式可以有更多的控制,例如:窗口大小、是否顯示菜單欄、是否顯示滾動條、是否顯示地址欄等等。其完整的調用語法如下:
window.open(url,windowName,"name1=value1[,name2=value2,[…]]");
其中:url是要打開的頁面地址;windowName表示新建窗口的名字,從而可以對其進行控制;最后是一個用字符串表示的參數列表。每一個參數都是名稱和值對應的形式,用逗號隔開,其中可以使用的參數如下。
??height:表示新建窗口的高度;
??width:表示新建窗口的寬度;
??left:表示新建窗口到屏幕左邊緣的距離;
??top:表示新建窗口到屏幕頂端的距離。
以上屬性的單位均為象素,例如對于800×600的分辨率,left=400則表示新窗口的左邊緣處于屏幕的正中間。其余的屬性主要是布爾型的,用yes或者1表示開啟,用no或者0表示關閉。如果是開啟,則yes或者1可省略,例如:toolbar=1等價于toolbar=yes等價于toolbar,下面分別介紹這些屬性:
??directories:是否顯示鏈接工具欄;
??location:是否顯示地址欄;
??menubar:是否顯示菜單欄;
??resizable:是否允許調整窗口大小;
??scrollbars:是否顯示滾動條;
??status:是否顯示狀態欄;
??toolbar:是否顯示工具欄。
例如,下面的代碼將顯示一個無菜單、無工具條、無滾動條的窗口:
window.open("test3.html","","height=200,width=300, toolbar=0,menubar=0,scrollbars=0");
使用定時器實現JavaScript的延期執行或重復執行
window對象提供了兩個方法來實現定時器的效果,分別是window.setTimeout()和window.setInterval。其中前者可以使一段代碼在指定時間后運行;而后者則可以使一段代碼每過指定時間就運行一次。它們的原型如下:
window.setTimeout(expression,milliseconds);
window.setInterval(expression,milliseconds);
其中,expression可以是用引號括起來的一段代碼,也可以是一個函數名,到了指定的時間,系統便會自動調用該函數,當使用函數名作為調用句柄時,不能帶有任何參數;而使用字符串時,則可以在其中寫入要傳遞的參數。兩個方法的第二個參數是milliseconds,表示延時或者重復執行的毫秒數。下面分別介紹兩種方法。
1.window.setTimeout方法
該方法可以延時執行一個函數,例如:
<script language="JavaScript" type="text/javascript">
<!--
function hello(){
?alert("hello");
}
window.setTimeout(hello,5000);
//-->
</script>
這段代碼將使得頁面打開5秒鐘后顯示對話框“hello”。其中最后一句也可以寫為:
window.setTimeout("hello()",5000);
讀者可以體會它們的差別,在window.setInterval方法中也有這樣的性質。
如果在延時期限到達之前取消延執行,可以使用window.clearTimeout(timeoutId)方法,該方法接收一個id,表示一個定時器。這個id是由setTimeout方法返回的,例如:
<script language="JavaScript" type="text/javascript">
<!--
function hello(){
????? alert("hello");
}
var window.clearTimeout(id);
}
//-->
</script>
這樣,如果要取消顯示,只需單擊頁面任何一部分,就執行了window.clearTimeout方法,使得超時操作被取消。
2.window.setInterval方法
該方法使得一個函數每隔固定時間被調用一次,是一個很常用的方法。如果想要取消定時執行,和clearTimeout方法類似,可以調用window.clearInterval方法。clearInterval方法同樣接收一個setInterval方法返回的值作為參數。例如:
//定義一個反復執行的調用
var somefunction",10000);
//取消定時執行
window.clearInterval(id);
上面的代碼僅用于說明怎樣取消一個定時執行。實際上在很多場合都需要用到setInterval方法,下面將設計一個秒表,來介紹setInterval函數的用途:該秒表將包括兩個按鈕和一個用于顯示時間的文本框。當單擊開始按鈕時開始計時,最小單位為0.01秒,此時再次單擊按鈕則停止計時,文本框顯示經過的時間。另外一個按鈕用于將當前時間清零。其實現代碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
</head>
<body>
<form action="somepage.asp">
<input type="text" value="0" />
<input type="button" value="開始" />
<input type="button" value="重置" />
</form>
</body>
</html>
<script language="JavaScript" type="text/javascript">
<!--
//獲取表單中的表單域
var txt=document.forms[0].elements["txt1"];
var btnStart=document.forms[0].elements["btnStart"];
var btnReset=document.forms[0].elements["btnReset"]
//定義定時器的id
var id;
//每10毫秒該值增加1
var seed=0;
btnStart.onclick=function(){
????? //根據按鈕文本來判斷當前操作
????? if(this.value=="開始"){
????????????? //使按鈕文本變為停止
????????????? this.value="停止";
????????????? //使重置按鈕不可用
????????????? btnReset.disabled=true;
????????????? //設置定時器,每0.01s跳一次
????????????? }else{
????????????? //使按鈕文本變為開始
????????????? this.value="開始";
????????????? //使重置按鈕可用
????????????? btnReset.disabled=false;
????????????? //取消定時
????????????? window.clearInterval(id);
????? }
}
//重置按鈕
btnReset.onclick=function(){
???? seed=0;
}
//讓秒表跳一格
function tip(){
????? seed++;
????? txt.value=seed/100;
}
//-->
</script>
給定時器調用傳遞參數
無論是window.setTimeout還是window.setInterval,在使用函數名作為調用句柄時都不能帶參數,而在許多場合必須要帶參數,這就需要想方法解決。例如對于函數hello(_name),它用于針對用戶名顯示歡迎信息:
var userName="jack";
//根據用戶名顯示歡迎信息
function hello(_name){
????? alert("hello,"+_name);
}
這時,如果企圖使用以下語句來使hello函數延遲3秒執行是不可行的:
window.setTimeout(hello(userName),3000);
這將使hello函數立即執行,并將返回值作為調用句柄傳遞給setTimeout函數,其結果并不是程序需要的。而使用字符串形式可以達到想要的結果:
window.setTimeout("hello(userName)",3000);
這里的字符串是一段JavaScript代碼,其中的userName表示的是變量。但這種寫法不夠直觀,而且有些場合必須使用函數名,下面用一個小技巧來實現帶參數函數的調用:
<script language="JavaScript" type="text/javascript">
<!--
var userName="jack";
//根據用戶名顯示歡迎信息
function hello(_name){
?????? alert("hello,"+_name);
}
//創建一個函數,用于返回一個無參數函數
function _hello(_name){
?????? return function(){
???????????? hello(_name);
?????? }
}
window.setTimeout(_hello(userName),3000);
//-->
</script>
這里定義了一個函數_hello,用于接收一個參數,并返回一個不帶參數的函數,在這個函數內部使用了外部函數的參數,從而對其調用,不需要使用參數。在window.setTimeout函數中,使用_hello(userName)來返回一個不帶參數的函數句柄,從而實現了參數傳遞的功能。
使用status和defaultStatus屬性改變狀態欄信息
status和defaultStatus是window對象的屬性,用于設置狀態欄信息,語法為:
window.status="message";
window.defaultStatus="message";
其中status屬性就是用于設置狀態欄顯示的文本。而defaultStatus表示默認的狀態欄信息,例如默認情況下IE瀏覽器會顯示“完畢”,而Firefox瀏覽器則顯示“完成”。可以通過defaultStatus來改變這一信息。
使用alert、prompt和confirm語句與用戶進行交互
這三個語句都是彈出一個對話框,來處理用戶輸入。它們都是window對象的一個方法,在實際使用時,常常省略window,而直接寫成alert("hello")類似的形式。下面分別介紹:
1.alert語句
該語句的原型是:
window.alert(message);
alert接收一個參數,該參數將轉換為字符串直接顯示在對話框上,例如:
alert("hello,ajax");
2.prompt語句
該語句的原型是:
window.prompt(message,defaultValue);
prompt用于讓用戶輸入一個值,其中message表示提示信息,defaultValue表示顯示于文本框的初始值;函數返回用戶的輸入。對話框包括【確定】和【取消】兩個按鈕,用戶單擊【確定】按鈕則返回文本框中的內容,單擊【取消】則返回null。例如:
var userName=window.prompt("請輸入您的姓名:","");
alert("hello,"+userName);
其中prompt提示用戶輸入其姓名,使用userName變量獲取用戶輸入,并顯示歡迎信息。
3.confirm語句
該語句的原型是:
window.confirm(message);
其作用是顯示一條信息讓用戶確認,彈出的對話框包括【確定】和【取消】兩個按鈕,如果用戶單擊【確定】,則confirm函數返回true,否則返回false。例如下面的語句:
if(confirm("確定刪除該記錄嗎?")){
?????? //刪除記錄的操作
}else{
?????? //不刪除記錄
}