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