一:彈出框
JavaScript中有三種彈出框:警告(alert)、確認(rèn)(confirm)以及提問(wèn)(prompt)。
1.警告(alert)
在訪問(wèn)網(wǎng)站的時(shí)候,你遇到“咚”的一聲,一個(gè)小窗口出現(xiàn)在你面前,上面寫(xiě)著一段警示性的文字,或是其它的提示信息。如果你不點(diǎn)擊確定,你就不能對(duì)網(wǎng)頁(yè)做任何的操作。沒(méi)錯(cuò),這個(gè)“咚”的小窗口就是alert干的。 下面的代碼是一段使用alert的實(shí)例。
<script type="text/JavaScript">
alert("我是菜鳥(niǎo)我怕誰(shuí)");
</script>
2.確認(rèn)(confirm)
確認(rèn)框用于讓用戶(hù)選擇某一個(gè)問(wèn)題是否符合實(shí)際情況。來(lái)看下面的代碼:我們用confirm("你是菜鳥(niǎo)嗎?")向訪客提問(wèn),變量r則保存了訪客的回應(yīng),它只可能有兩種取值:true或false。沒(méi)錯(cuò),它是一個(gè)布爾值。confirm后面的語(yǔ)句則是我們對(duì)訪客回答做出的不同回應(yīng)。
var r=confirm("你是菜鳥(niǎo)嗎");
if (r==true)
{ document.write("彼此彼此"); }
else
{ document.write("佩服佩服"); } </script>
3.提問(wèn)(prompt)
prompt和confirm類(lèi)似,不過(guò)它允許訪客隨意輸入回答。我們根據(jù)分?jǐn)?shù)來(lái)做出不同的評(píng)價(jià),現(xiàn)在我么就可以用prompt來(lái)向訪客提問(wèn),用score存儲(chǔ)用戶(hù)輸入的回答,其余的事情就都由后面的switch來(lái)完成了。
function judge() {
var score;//分?jǐn)?shù)
var degree;//分?jǐn)?shù)等級(jí)
score = prompt("你的分?jǐn)?shù)是多少?")
if (score > 100){
degree = '耍我?100分滿(mǎn)!'; }
else{
switch (parseInt(score / 10)) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
degree = "恭喜你,又掛了!";
break;
case 6:
degree = "勉強(qiáng)及格";
break;
case 7:
degree = "湊合,湊合"
break;
case 8:
degree = "8錯(cuò),8錯(cuò)";
break;
case 9:
case 10:
degree = "高手高手,佩服佩服";
}//end of switch
}//end of else
alert(degree);
}
二:JavaScript事件
我們之前提到過(guò)函數(shù)的調(diào)用。函數(shù)定義之后,默認(rèn)是不會(huì)執(zhí)行的,這時(shí)候就需要一些事件來(lái)觸發(fā)這個(gè)函數(shù)的執(zhí)行。 JavaScript很多有很多事件,例如鼠標(biāo)的點(diǎn)擊、移動(dòng),網(wǎng)頁(yè)的載入和關(guān)閉。我們一起來(lái)看幾個(gè)事件的實(shí)例。
1.點(diǎn)擊事件
使用點(diǎn)擊事件調(diào)用,需要給元素設(shè)置onclick屬性。示例代碼如下:
<button value="點(diǎn)擊提交" onclick="displaymessage()">onclick調(diào)用函數(shù)</button>
由于設(shè)置了onclick="displaymessage()",因此點(diǎn)擊按鈕則會(huì)調(diào)用函數(shù)。
2.鼠標(biāo)經(jīng)過(guò)、移出事件
使用鼠標(biāo)經(jīng)過(guò)事件調(diào)用函數(shù)的代碼如下:
<button value="點(diǎn)擊提交" onmouseover="displaymessage()">鼠標(biāo)滑過(guò)調(diào)用函數(shù)</button>
當(dāng)鼠標(biāo)經(jīng)過(guò)按鈕時(shí),觸發(fā)onmouseover事件,將會(huì)調(diào)用函數(shù)displaymessage()。
使用鼠標(biāo)移出事件調(diào)用函數(shù)的代碼如下:
<button value="點(diǎn)擊提交" onmouseout="displaymessage()">鼠標(biāo)移出調(diào)用函數(shù)</button>
把鼠標(biāo)移動(dòng)到這個(gè)按鈕里面,當(dāng)再移動(dòng)出去時(shí),觸發(fā)onmouseout 事件,將會(huì)調(diào)用函數(shù)displaymessage()。
11.3更多事件
JavaScript中還有很多事件,完整的列表可以看看http://www.w3pop.com/learn/view/p/3/o/0/doc/jsref_events/。
下面的列表列舉了可以插入HTML標(biāo)簽中來(lái)定義事件動(dòng)作的屬性,具體的用法請(qǐng)參考上面的網(wǎng)站
屬性
|
事件發(fā)生時(shí)機(jī)
|
onabort
|
圖片下載被打斷時(shí)
|
onblur
|
元素失去焦點(diǎn)時(shí)
|
onchange
|
框內(nèi)容改變時(shí)
|
onclick
|
鼠標(biāo)點(diǎn)擊一個(gè)對(duì)象時(shí)
|
ondblclick
|
鼠標(biāo)雙擊一個(gè)對(duì)象時(shí)
|
onerror
|
當(dāng)加載文檔或圖片時(shí)發(fā)生錯(cuò)誤時(shí)
|
onfocus
|
當(dāng)元素獲取焦點(diǎn)時(shí)
|
onkeydown
|
按下鍵盤(pán)按鍵時(shí)
|
onkeypress
|
按下或按住鍵盤(pán)按鍵時(shí)
|
onkeyup
|
放開(kāi)鍵盤(pán)按鍵時(shí)
|
onload
|
頁(yè)面或圖片加載完成時(shí)
|
onmousedown
|
鼠標(biāo)被按下時(shí)
|
onmousemove
|
鼠標(biāo)被移動(dòng)時(shí)
|
onmouseout
|
鼠標(biāo)離開(kāi)元素時(shí)
|
onmouseover
|
鼠標(biāo)經(jīng)過(guò)元素時(shí)
|
onmouseup
|
釋放鼠標(biāo)按鍵時(shí)
|
onreset
|
重新點(diǎn)擊鼠標(biāo)按鍵時(shí)
|
onresize
|
當(dāng)窗口或框架被重新定義尺寸時(shí)
|
onselect
|
文本被選擇時(shí)
|
onsubmit
|
點(diǎn)擊提交按鈕時(shí)
|
onunload
|
用戶(hù)離開(kāi)頁(yè)面時(shí)
|
三:JavaScript 對(duì)象化編程
JavaScript 是使用“對(duì)象化編程”的,或者叫“面向?qū)ο缶幊?/span>”的。所謂“對(duì)象化編程”,意思是把 JavaScript 能涉及的范圍劃分成大大小小的對(duì)象,對(duì)象下面還繼續(xù)劃分對(duì)象直至非常詳細(xì)為止,所有的編程都以對(duì)象為出發(fā)點(diǎn),基于對(duì)象。小到一個(gè)變量,大到網(wǎng)頁(yè)文檔、窗口甚至屏幕,都是對(duì)象。JavaScript對(duì)象是可以是一段文字、一幅圖片、一個(gè)表單(Form)等等。每個(gè)對(duì)象有它自己的屬性、方法和事件。對(duì)象的屬性是反映該對(duì)象某些特定的性質(zhì)的,例如:字符串的長(zhǎng)度、圖像的長(zhǎng)寬、文字框(Textbox)里的文字等等;對(duì)象的方法能對(duì)該對(duì)象做一些事情,例如,表單的“提交”(Submit),窗口的“滾動(dòng)”(Scrolling)等等;而對(duì)象的事件就能響應(yīng)發(fā)生在對(duì)象上的事情,例如提交表單產(chǎn)生表單的“提交事件”,點(diǎn)擊連接產(chǎn)生的“點(diǎn)擊事件”。不是所有的對(duì)象都有以上三個(gè)性質(zhì),有些沒(méi)有事件,有些只有屬性。引用對(duì)象的任一“性質(zhì)”用“<對(duì)象名>.<性質(zhì)名>”這種方法。
JavaScript對(duì)象有:基本對(duì)象、全局對(duì)象、文檔對(duì)象。下面我們一一介紹。
14.1基本對(duì)象
(1)String 字符串對(duì)象 :前面博客中已經(jīng)提到過(guò)了,并且具體用法和方法和java中的基本相識(shí),在此不在寫(xiě)了
(2)Array 數(shù)組對(duì)象
數(shù)組對(duì)象是一個(gè)對(duì)象的集合,里邊的對(duì)象可以是不同類(lèi)型的。數(shù)組的每一個(gè)成員對(duì)象都有一個(gè)“下標(biāo)”,用來(lái)表示它在數(shù)組中的位置,是從零開(kāi)始的。
屬性
length 用法:<數(shù)組對(duì)象>.length;返回:數(shù)組的長(zhǎng)度,即數(shù)組里有多少個(gè)元素。它等于數(shù)組里最后一個(gè)元素的下標(biāo)加一。
方法
join() 用法:<數(shù)組對(duì)象>.join(<分隔符>);返回一個(gè)字符串,該字符串把數(shù)組中的各個(gè)元素串起來(lái),用<分隔符>置于元素與元素之間。這個(gè)方法不影響數(shù)組原本的內(nèi)容。
reverse() 用法:<數(shù)組對(duì)象>.reverse();使數(shù)組中的元素順序反過(guò)來(lái)。如果對(duì)數(shù)組[1, 2, 3]使用這個(gè)方法,它將使數(shù)組變成:[3, 2, 1]。
slice() 用法:<數(shù)組對(duì)象>.slice(<始>[, <終>]);返回一個(gè)數(shù)組,該數(shù)組是原數(shù)組的子集,始于<始>,終于<終>。如果不給出<終>,則子集一直取到原數(shù)組的結(jié)尾。
sort() 用法:<數(shù)組對(duì)象>.sort([<方法函數(shù)>]);使數(shù)組中的元素按照一定的順序排列。如果不指定<方法函數(shù)>,則按字母順序排列。在這種情況下,80 是比 9 排得前的。如果指定<方法函數(shù)>,則按<方法函數(shù)>所指定的排序方法排序。<方法函數(shù)>比較難講述,這里只將一些有用的<方法函數(shù)>介紹給大家。
按升序排列數(shù)字:
function sortMethod(a, b) {
return a - b;
}
myArray.sort(sortMethod);
按降序排列數(shù)字:把上面的“a - b”該成“b - a”。
(3)Math “數(shù)學(xué)”對(duì)象
Math對(duì)象,提供對(duì)數(shù)據(jù)的數(shù)學(xué)計(jì)算。下面所提到的屬性和方法,不再詳細(xì)說(shuō)明“用法”,大家在使用的時(shí)候記住用“Math.<名>”這種格式。
屬性
E 返回常數(shù) e (2.718281828...)。
LN2 返回 2 的自然對(duì)數(shù) (ln 2)。
LN10 返回 10 的自然對(duì)數(shù) (ln 10)。
LOG2E 返回以 2 為低的 e 的對(duì)數(shù) (log2e)。
LOG10E 返回以 10 為低的 e 的對(duì)數(shù) (log10e)。
PI 返回π(3.1415926535...)。
SQRT1_2 返回 1/2 的平方根。 SQRT2 返回 2 的平方根。
方法
abs(x) 返回 x 的絕對(duì)值。
acos(x) 返回 x 的反余弦值(余弦值等于 x 的角度),用弧度表示。 asin(x) 返回 x 的反正弦值。
atan(x) 返回 x 的反正切值。
atan2(x, y) 返回復(fù)平面內(nèi)點(diǎn)(x, y)對(duì)應(yīng)的復(fù)數(shù)的幅角,用弧度表示,其值在-π 到π之間。
ceil(x) 返回大于等于 x 的最小整數(shù)。
cos(x) 返回 x 的余弦。
exp(x) 返回 e 的 x 次冪 (ex)。
floor(x) 返回小于等于 x 的最大整數(shù)。
log(x) 返回 x 的自然對(duì)數(shù) (ln x)。
max(a, b) 返回 a, b 中較大的數(shù)。
min(a, b) 返回 a, b 中較小的數(shù)。
pow(n, m) 返回 n 的 m 次冪 (nm)。
random() 返回大于 0 小于 1 的一個(gè)隨機(jī)數(shù)。
round(x) 返回 x 四舍五入后的值。
sin(x) 返回 x 的正弦。
sqrt(x) 返回 x 的平方根。
tan(x) 返回 x 的正切。
(4)Date 對(duì)象
Date 日期對(duì)象。這個(gè)對(duì)象可以?xún)?chǔ)存任意一個(gè)日期,從 0001 年到 9999 年,并且可以精確到毫秒數(shù)(1/1000 秒)。
定義一個(gè)日期對(duì)象:
var today = new Date();
這個(gè)方法使 d 成為日期對(duì)象,并且已有初始值:當(dāng)前時(shí)間。如果要自定初始值,可以用下列方法:
var d = new Date(99, 10, 1); //99 年 10 月 1 日 var d = new Date('Oct 1, 1999'); //99 年 10 月 1 日
最好的方法就是用下面介紹的“方法”來(lái)嚴(yán)格的定義時(shí)間。
方法
以下有很多getXXX()、setXXX()這樣的方法,getXXX()是獲得某個(gè)數(shù)值,而setXXX()是設(shè)定某個(gè)數(shù)值。
如無(wú)說(shuō)明,方法的使用格式為:“<對(duì)象>.<方法>”,下同。
get/setFullYear() 返回/設(shè)置年份,用四位數(shù)表示。如果使用“x.setFullYear(99)”,則年份被設(shè)定為 0099 年。
get/setYear() 返回/設(shè)置年份,用兩位數(shù)表示。設(shè)定的時(shí)候?yàn)g覽器自動(dòng)加上“19”開(kāi)頭,故使用“x.setYear(00)”把年份設(shè)定為 1900 年。
get/setMonth() 返回/設(shè)置月份, 0 表示1月。
get/setDate() 返回/設(shè)置日期。
get/setDay() 返回/設(shè)置星期,0 表示星期天。
get/setHours() 返回/設(shè)置小時(shí)數(shù),24小時(shí)制。
get/setMinutes() 返回/設(shè)置分鐘數(shù)。
get/setSeconds() 返回/設(shè)置秒鐘數(shù)。
get/setMilliseconds() 返回/設(shè)置毫秒數(shù)。
get/setTime() 返回/設(shè)置時(shí)間,該時(shí)間就是日期對(duì)象的內(nèi)部處理方法:從 1970 年 1 月 1 日零時(shí)正開(kāi)始計(jì)算到日期對(duì)象所指的日期的毫秒數(shù)。如果要使某日期對(duì)象所指的時(shí)間推遲 1 小時(shí),就用:“x.setTime(x.getTime() + 60 * 60 * 1000);”(一小時(shí) 60 分,一分 60 秒,一秒 1000 毫秒)。
getTimezoneOffset() 返回日期對(duì)象采用的時(shí)區(qū)與格林威治時(shí)間所差的分鐘數(shù)。在格林威治東方的市區(qū),該值為負(fù),例如:中國(guó)時(shí)區(qū)(GMT+0800)返回“-480”。 toString() 返回一個(gè)字符串,描述日期對(duì)象所指的日期。這個(gè)字符串的格式類(lèi)似于:“FriJul 21 15:43:46 UTC+0800 2000”。
toLocaleString() 返回一個(gè)字符串,描述日期對(duì)象所指的日期,用本地時(shí)間表示格式。如:“2000-07-21 15:43:46”。
toGMTString() 返回一個(gè)字符串,描述日期對(duì)象所指的日期,用 GMT 格式。
toUTCString() 返回一個(gè)字符串,描述日期對(duì)象所指的日期,用 UTC 格式。
parse() 用法:Date.parse(<日期對(duì)象>);返回該日期對(duì)象的內(nèi)部表達(dá)方式。
下面例子顯示當(dāng)前日期:
<html>
<body>
<script language="JavaScript">
today = new Date();
var day; var date;
if(today.getDay()==0) day = "星期日"
if(today.getDay()==1) day = "星期一"
if(today.getDay()==2) day = "星期二"
if(today.getDay()==3) day = "星期三"
if(today.getDay()==4) day = "星期四"
if(today.getDay()==5) day = "星期五"
if(today.getDay()==6) day = "星期六"
date = "今天是" + (today.getYear()) + "年" + (today.getMonth() + 1 ) + "月 " + today.getDate() + " 日 " + day +"";
document.write(date);
</script>
</body>
</html>
2.文檔對(duì)象
文檔對(duì)象是指在網(wǎng)頁(yè)文檔里劃分出來(lái)的對(duì)象。在 JavaScript 能夠涉及的范圍內(nèi)有如下幾個(gè)“大”對(duì)象:window, document, location, navigator, screen, history 等。下面是一個(gè)文檔對(duì)象樹(shù)。
要引用某個(gè)對(duì)象,就要把父級(jí)的對(duì)象都列出來(lái)。例如,要引用某表單“MyForm”的某文字框“UserName”,就要用“document. MyForm. UserName”。
引用Form下的表單元素對(duì)象不使用名稱(chēng),比如Button,而是通過(guò)對(duì)象的ID 或 Name進(jìn)行引用,或使用它所屬的對(duì)象數(shù)組。比如:
<input id="UserName" type="text" />
var name = document.getElementById("UserName");//通過(guò)id獲取值
(1)navigator
navigator 瀏覽器對(duì)象 反映了當(dāng)前使用的瀏覽器的資料。
屬性
appCodeName 返回瀏覽器的“碼名”,流行的 IE 和 NN 都返回 'Mozilla'。
appName 返回瀏覽器名。IE 返回 'Microsoft Internet Explorer',NN 返回 'Netscape'。
appVersion 返回瀏覽器版本,包括了大版本號(hào)、小版本號(hào)、語(yǔ)言、操作平臺(tái)等信息。
platform 返回瀏覽器的操作平臺(tái),對(duì)于 Windows 9x 上的瀏覽器,返回 'Win32'(大小寫(xiě)可能有差異)。
userAgent 返回以上全部信息。例如,IE5.01 返回 'Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)'。
javaEnabled() 返回一個(gè)布爾值,代表當(dāng)前瀏覽器允許不允許 Java。
(2)screen
screen 屏幕對(duì)象 反映了當(dāng)前用戶(hù)的屏幕設(shè)置。
屬性
width 返回屏幕的寬度(像素?cái)?shù))。 height 返回屏幕的高度。 availWidth 返回屏幕的可用寬度(除去了一些不自動(dòng)隱藏的類(lèi)似任務(wù)欄的東西所占用的寬度)。
availHeight 返回屏幕的可用高度。
colorDepth 返回當(dāng)前顏色設(shè)置所用的位數(shù) - 1:黑白;8:256色;16:增強(qiáng)色;24/32:真彩色
(3)window
window 窗口對(duì)象是最大的對(duì)象,它描述的是一個(gè)瀏覽器窗口。一般要引用它的屬性和方法時(shí),不需要用“window.xxx”這種形式,而直接使用“xxx”。一個(gè)框架頁(yè)面也是一個(gè)窗口。
屬性
name 窗口的名稱(chēng),由打開(kāi)它的連接(<a target="...">)或框架頁(yè)(<frame name="...">)或某一個(gè)窗口調(diào)用的 open() 方法決定。一般我們不會(huì)用這個(gè)屬性。
status 指窗口下方的“狀態(tài)欄”所顯示的內(nèi)容。通過(guò)對(duì) status 賦值,可以改變狀態(tài)欄的顯示。
opener 用法:window.opener;返回打開(kāi)本窗口的窗口對(duì)象。
注意:返回的是一個(gè)窗口對(duì)象。如果窗口不是由其他窗口打開(kāi)的,在 Netscape 中這個(gè)屬性返回 null;在 IE 中返回“未定義”(undefined)。
undefined 在一定程度上等于 null。
注意:undefined 不是 JavaScript 常數(shù),如果你企圖使用“undefined”,那就真的返回“未定義”了。
self 指窗口本身,它返回的對(duì)象跟 window 對(duì)象是一模一樣的。最常用的是“self.close()”,放在<a>標(biāo)記中:“<a href="javascript:self.close()">關(guān)閉窗口</a>”。
parent 返回窗口所屬的框架頁(yè)對(duì)象。
top 返回占據(jù)整個(gè)瀏覽器窗口的最頂端的框架頁(yè)對(duì)象。
history 歷史對(duì)象,見(jiàn)下。
location 地址對(duì)象,見(jiàn)下。
document 文檔對(duì)象,見(jiàn)下。
方法
open() 打開(kāi)一個(gè)窗口。
用法:open(<URL字符串>, <窗口名稱(chēng)字符串>, <參數(shù)字符串>); <URL字符串>:描述所打開(kāi)的窗口打開(kāi)哪一個(gè)網(wǎng)頁(yè)。如果留空(''),則不打開(kāi)任何網(wǎng)頁(yè)。 <窗口名稱(chēng)字符串>:描述被打開(kāi)的窗口的名稱(chēng)(window.name),可以使用'_top'、'_blank'等內(nèi)建名稱(chēng)。這里的名稱(chēng)跟“<a href="..." target="...">”里的“target”屬性是一樣的。 <參數(shù)字符串>:描述被打開(kāi)的窗口的樣式。如果只需要打開(kāi)一個(gè)普通窗口,該字符串留空(''),如果要指定樣式,就在字符串里寫(xiě)上一到多個(gè)參數(shù),參數(shù)之間用逗號(hào)隔開(kāi)。
例:打開(kāi)一個(gè) 400 x 100 的干凈的窗口: open('','_blank','width=400,height=100,menubar=no,toolbar=no, location=no,directories=no,status=no,scrollbars=yes,resizable=yes')
參數(shù)
|
top=#
|
窗口頂部離開(kāi)屏幕頂部的像素?cái)?shù)
|
left=#
|
窗口左端離開(kāi)屏幕左端的像素?cái)?shù)
|
width=#
|
窗口的寬度
|
height=#
|
窗口的高度
|
menubar=...
|
窗口有沒(méi)有菜單,取值yes或no
|
toolbar=...
|
窗口有沒(méi)有工具條,取值yes或no
|
location=...
|
窗口有沒(méi)有地址欄,取值yes或no
|
directories=...
|
窗口有沒(méi)有連接區(qū),取值yes或no
|
scrollbars=...
|
窗口有沒(méi)有滾動(dòng)條,取值yes或no
|
status=...
|
窗口有沒(méi)有狀態(tài)欄,取值yes或no
|
resizable=...
|
窗口給不給調(diào)整大小,取值yes或no
|
fullscreen=
|
窗口是否全屏,取值yes或no
|
open() 方法有返回值,返回的就是它打開(kāi)的窗口對(duì)象。所以,
var newWindow = open('','_blank');
這樣把一個(gè)新窗口賦值到“newWindow”變量中,以后通過(guò)“newWindow”變量就可以控制窗口了。
close()關(guān)閉一個(gè)已打開(kāi)的窗口。
用法:window.close() 或 self.close():關(guān)閉本窗口; <窗口對(duì)象>.close():關(guān)閉指定的窗口。 如果該窗口有狀態(tài)欄,調(diào)用該方法后瀏覽器會(huì)警告:“網(wǎng)頁(yè)正在試圖關(guān)閉窗口,是否關(guān)閉?”然后等待用戶(hù)選擇是否;如果沒(méi)有狀態(tài)欄,調(diào)用該方法將直接關(guān)閉窗口。
blur() 使焦點(diǎn)從窗口移走,窗口變?yōu)?/span>“非活動(dòng)窗口”。 focus() 是窗口獲得焦點(diǎn),變?yōu)?/span>“活動(dòng)窗口”。
scrollTo() 用法:[<窗口對(duì)象>.]scrollTo(x, y);使窗口滾動(dòng),使文檔從左上角數(shù)起的(x, y)點(diǎn)滾動(dòng)到窗口的左上角。
scrollBy() 用法:[<窗口對(duì)象>.]scrollBy(deltaX, deltaY);使窗口向右滾動(dòng) deltaX 像素,向下滾動(dòng) deltaY 像素。如果取負(fù)值,則向相反的方向滾動(dòng)。
resizeTo() 用法:[<窗口對(duì)象>.]resizeTo(width, height);使窗口調(diào)整大小到寬 width 像素,高 height 像素。
resizeBy() 用法:[<窗口對(duì)象>.]resizeBy(deltaWidth, deltaHeight);使窗口調(diào)整大小,寬增大 deltaWidth 像素,高增大 deltaHeight 像素。如果取負(fù)值,則減少。
alert() 用法:alert(<字符串>);彈出一個(gè)只包含“確定”按鈕的對(duì)話框,顯示<字符串>的內(nèi)容,整個(gè)文檔的讀取、Script 的運(yùn)行都會(huì)暫停,直到用戶(hù)按下“確定”。 C
onfirm() 用法:confirm(<字符串>);彈出一個(gè)包含“確定”和“取消”按鈕的對(duì)話框,顯示<字符串>的內(nèi)容,要求用戶(hù)做出選擇,整個(gè)文檔的讀取、Script 的運(yùn)行都會(huì)暫停。如果用戶(hù)按下“確定”,則返回 true 值,如果按下“取消”,則返回 false 值。
prompt() 用法:prompt(<字符串>[, <初始值>]);彈出一個(gè)包含“確認(rèn)”“取消”和一個(gè)文本框的對(duì)話框,顯示<字符串>的內(nèi)容,要求用戶(hù)在文本框輸入一些數(shù)據(jù),整個(gè)文檔的讀取、Script 的運(yùn)行都會(huì)暫停。如果用戶(hù)按下“確認(rèn)”,則返回文本框里已有的內(nèi)容,如果用戶(hù)按下“取消”,則返回 null 值。如果指定<初始值>,則文本框里會(huì)有默認(rèn)值。
setTimeout()和setInterval()的使用
這兩個(gè)方法都可以用來(lái)實(shí)現(xiàn)在一個(gè)固定時(shí)間段之后去執(zhí)行JavaScript。不過(guò)兩者各有各的應(yīng)用場(chǎng)景。 實(shí)際上,setTimeout和setInterval的語(yǔ)法相同。它們都有兩個(gè)參數(shù),一個(gè)是將要執(zhí)行的代碼字符串,還有一個(gè)是以毫秒為單位的時(shí)間間隔,當(dāng)過(guò)了那個(gè)時(shí)間段之后就將執(zhí)行那段代碼。 不過(guò)這兩個(gè)函數(shù)還是有區(qū)別的,setInterval在執(zhí)行完一次代碼之后,經(jīng)過(guò)了那個(gè)固定的時(shí)間間隔,它還會(huì)自動(dòng)重復(fù)執(zhí)行代碼,而setTimeout只執(zhí)行一次那段代碼。 雖然表面上看來(lái)setTimeout只能應(yīng)用在on-off方式的動(dòng)作上,不過(guò)可以通過(guò)創(chuàng)建一個(gè)函數(shù)循環(huán)重復(fù)調(diào)用setTimeout,以實(shí)現(xiàn)重復(fù)的操作:
showTime();
function showTime()
{
var today = new Date();
alert("The time is: " + today.toString());
setTimeout("showTime()", 5000);
}
一旦調(diào)用了這個(gè)函數(shù),那么就會(huì)每隔5秒鐘就顯示一次時(shí)間。如果使用setInterval,則相應(yīng)的代碼如下所示:
setInterval("showTime()", 5000);
function showTime()
{
var today = new Date();
alert("The time is: " + today.toString());
}
這兩種方法可能看起來(lái)非常像,而且顯示的結(jié)果也會(huì)很相似,不過(guò)兩者的最大區(qū)別就是,setTimeout方法不會(huì)每隔5秒鐘就執(zhí)行一次showTime函數(shù),它是在每次調(diào)用setTimeout后過(guò)5秒鐘再去執(zhí)行showTime函數(shù)。這意味著如果showTime函數(shù)的主體部分需要2秒鐘執(zhí)行完,那么整個(gè)函數(shù)則要每7秒鐘才執(zhí)行一次。而setInterval卻沒(méi)有被自己所調(diào)用的函數(shù)所束縛,它只是簡(jiǎn)單地每隔一定時(shí)間就重復(fù)執(zhí)行一次那個(gè)函數(shù)。 如果要求在每隔一個(gè)固定的時(shí)間間隔后就精確地執(zhí)行某動(dòng)作,那么最好使用setInterval,而如果不想由于連續(xù)調(diào)用產(chǎn)生互相干擾的問(wèn)題,尤其是每次函數(shù)的調(diào)用需要繁重的計(jì)算以及很長(zhǎng)的處理時(shí)間,那么最好使用setTimeout。 用 setInterval 命令來(lái)創(chuàng)建的對(duì)象,可以用 clearInterval() 命令來(lái)終止。比如:
var MyMar=setInterval(showTime(),speed);
clearInterval(MyMar);
(4)history
history 歷史對(duì)象指瀏覽器的瀏覽歷史。
屬性
length 歷史的項(xiàng)數(shù)。JavaScript 所能管到的歷史被限制在用瀏覽器的“前進(jìn)”“后退”鍵可以去到的范圍。本屬性返回的是“前進(jìn)”和“后退”兩個(gè)按鍵之下包含的地址數(shù)的和。
方法
back() 后退,跟按下“后退”鍵是等效的。
forward() 前進(jìn),跟按下“前進(jìn)”鍵是等效的。
go() 用法:history.go(x);在歷史的范圍內(nèi)去到指定的一個(gè)地址。如果 x < 0,則后退 x 個(gè)地址,如果 x > 0,則前進(jìn) x 個(gè)地址,如果 x == 0,則刷新現(xiàn)在打開(kāi)的網(wǎng)頁(yè)。history.go(0) 跟 location.reload() 是等效的。
(5)location
location 地址對(duì)象描述的是某一個(gè)窗口對(duì)象所打開(kāi)的地址。要表示當(dāng)前窗口的地址,只需要使用“location”就行了;若要表示某一個(gè)窗口的地址,就使用“<窗口對(duì)象>.location”。
注意 屬于不同協(xié)議或不同主機(jī)的兩個(gè)地址之間不能互相引用對(duì)方的 location 對(duì)象,這是出于安全性的需要。例如,當(dāng)前窗口打開(kāi)的是“www.a.com”下面的某一頁(yè),另外一個(gè)窗口(對(duì)象名為:bWindow)打開(kāi)的是“www.b.com”的網(wǎng)頁(yè)。如果在當(dāng)前窗口使用“bWindow.location”,就會(huì)出錯(cuò):“沒(méi)有權(quán)限”。這個(gè)錯(cuò)誤是不能用錯(cuò)誤處理程序(Event Handler,參閱 onerror 事件)來(lái)接收處理的。
屬性
protocol 返回地址的協(xié)議,取值為 'http:','https:','file:' 等等。 hostname 返回地址的主機(jī)名,例如,一個(gè)“http://www.microsoft.com/china/”的地址,location.hostname == 'www.microsoft.com'。 port 返回地址的端口號(hào),一般 http 的端口號(hào)是 '80'。 host 返回主機(jī)名和端口號(hào),如:'www.a.com:8080'。 pathname 返回路徑名,如“http://www.a.com/b/c.html”,location.pathname == 'b/c.html'。 hash 返回“#”以及以后的內(nèi)容,如“http://www.a.com/b/c.html#chapter4”,location.hash == '#chapter4';如果地址里沒(méi)有“#”,則返回空字符串。 search 返回“?”以及以后的內(nèi)容,如“http://www.a.com/b/c.asp?selection=3&jumpto=4”,location.search == '?selection=3&jumpto=4';如果地址里沒(méi)有“?”,則返回空字符串。 href 返回以上全部?jī)?nèi)容,也就是說(shuō),返回整個(gè)地址。在瀏覽器的地址欄上怎么顯示它就怎么返回。如果想一個(gè)窗口對(duì)象打開(kāi)某地址,可以使用“location.href = '...'”,也可以直接用“location = '...'”來(lái)達(dá)到此目的。
方法
reload() 相當(dāng)于按瀏覽器上的“刷新”(IE)或“Reload”(Netscape)鍵。 replace() 打開(kāi)一個(gè) URL,并取代歷史對(duì)象中當(dāng)前位置的地址。用這個(gè)方法打開(kāi)一個(gè) URL 后,按下瀏覽器的“后退”鍵將不能返回到剛才的頁(yè)面。
(6)document
document 文檔對(duì)象 描述當(dāng)前窗口或指定窗口對(duì)象的文檔。它包含了文檔從<head>到</body>的內(nèi)容。 用法:document (當(dāng)前窗口) 或 <窗口對(duì)象>.document (指定窗口)
屬性
lastModified 當(dāng)前文檔的最后修改日期,是一個(gè) Date 對(duì)象。 referrer 如果當(dāng)前文檔是通過(guò)點(diǎn)擊連接打開(kāi)的,則 referrer 返回原來(lái)的 URL。
title 指<head>標(biāo)記里用<title>...</title>定義的文字。在 Netscape 里本屬性不接受賦值。
fgColor 指<body>標(biāo)記的 text 屬性所表示的文本顏色。
bgColor 指<body>標(biāo)記的 bgcolor 屬性所表示的背景顏色。 linkColor 指<body>標(biāo)記的 link 屬性所表示的連接顏色。 alinkColor 指<body>標(biāo)記的 alink 屬性所表示的活動(dòng)連接顏色。 vlinkColor 指<body>標(biāo)記的 vlink 屬性所表示的已訪問(wèn)連接顏色。
方法
open() 打開(kāi)文檔以便 JavaScript 能向文檔的當(dāng)前位置(指插入 JavaScript 的位置)寫(xiě)入數(shù)據(jù)。通常不需要用這個(gè)方法,在需要的時(shí)候 JavaScript 自動(dòng)調(diào)用。
write(); writeln() 向文檔寫(xiě)入數(shù)據(jù),所寫(xiě)入的會(huì)當(dāng)成標(biāo)準(zhǔn)文檔 HTML 來(lái)處理。writeln() 與 write() 的不同點(diǎn)在于,writeln() 在寫(xiě)入數(shù)據(jù)以后會(huì)加一個(gè)換行。這個(gè)換行只是在 HTML 中換行,具體情況能不能夠是顯示出來(lái)的文字換行,要看插入 JavaScript 的位置而定。如在<pre>標(biāo)記中插入,這個(gè)換行也會(huì)體現(xiàn)在文檔中。
clear() 清空當(dāng)前文檔。
close() 關(guān)閉文檔,停止寫(xiě)入數(shù)據(jù)。如果用了 write[ln]() 或 clear() 方法,就一定要用 close() 方法來(lái)保證所做的更改能夠顯示出來(lái)。如果文檔還沒(méi)有完全讀取,也就是說(shuō),JavaScript 是插在文檔中的,那就不必使用該方法。
現(xiàn)在我們已經(jīng)擁有足夠的知識(shí)來(lái)做以下這個(gè)很多網(wǎng)站都有的彈出式更新通知了。
<script language="JavaScript"> <!-- var whatsNew = open('','_blank','top=50,left=50,width=200,height=300,' + 'menubar=no,toolbar=no,directories=no,location=no,' + 'status=no,resizable=no,scrollbars=yes'); whatsNew.document.write('<center><b>更新通知</b></center>'); whatsNew.document.write('<p>最后更新日期:00.08.01');
whatsNew.document.write('<p>00.08.01:增加了“我的最?lèi)?ài)”欄目。'); whatsNew.document.write('<p align="right">' + '<a href="javascript:self.close()">關(guān)閉窗口</a>'); whatsNew.document.close(); --> </script>
當(dāng)然也可以先寫(xiě)好一個(gè) HTML 文件,在 open() 方法中直接 load 這個(gè)文件。
(7)anchors[]; links[]; Link
anchors[]; links[]; Link 連接對(duì)象。
用法:document.anchors[[x]]; document.links[[x]]; <anchorId>; <linkId>
document.anchors 是一個(gè)數(shù)組,包含了文檔中所有錨標(biāo)記(包含 name 屬性的<a>標(biāo)記),按照在文檔中的次序,從 0 開(kāi)始給每個(gè)錨標(biāo)記定義了一個(gè)下標(biāo)。
document.links 也是一個(gè)數(shù)組,包含了文檔中所有連接標(biāo)記(包含 href 屬性的<a>標(biāo)記和<map>標(biāo)記段里的<area>標(biāo)記),按照在文檔中的次序,從 0 開(kāi)始給每個(gè)連接標(biāo)記定義了一個(gè)下標(biāo)。 如果一個(gè)<a>標(biāo)記既有 name 屬性,又有 href 屬性,則它既是一個(gè) Anchor 對(duì)象,又是一個(gè) Link 對(duì)象。 在 IE 中,如果在<a>標(biāo)記中添加“id="..."”屬性,則這個(gè)<a>對(duì)象被賦予一個(gè)標(biāo)識(shí)(ID),調(diào)用這個(gè)對(duì)象的時(shí)候只需要使用“<id>”就行了。很多文檔部件都可以用這個(gè)方法來(lái)賦予 ID,但要注意不能有兩個(gè) ID 相同。
anchors 和 links 作為數(shù)組,有數(shù)組的屬性和方法。單個(gè) Anchor 對(duì)象沒(méi)有屬性;單個(gè) Link 對(duì)象的屬性見(jiàn)下。
屬性
protocol; hostname; port; host; pathname; hash; search; href 與 location 對(duì)象相同。 target 返回/指定連接的目標(biāo)窗口(字符串),與<a>標(biāo)記里的 target 屬性是一樣的。