[js教程]

JavaScript教程
  1.JS簡介及特點
 2.JS與Java的區別
 3.JS的運行環境
 4.JS的數據類型和變量
 5.JS的語句及語法
 6.JS的對象及其屬性和方法
 7.JS的事件處理 
*********************************************************************************************************

1.JS簡介及特點
    JavaScript語言的前身叫作Livescript。自從Sun公司推出著名的Java語言之後,Netscape公司引進了Sun公司有關Java的程序概念,將自己原有的Livescript 重新進行設計,並改名爲JavaScript。
   JavaScript是一種基於對象和事件驅動並具有安全性能的腳本語言,有了JavaScript,可使網頁變得生動。使用它的目的是與HTML超文本標識語言、Java 腳本語言一起實現在一個網頁中鏈接多個對象,與網絡客戶交互作用,從而可以開發客戶端的應用程序。它是通過嵌入或調入在標準的HTML語言中實現的。
   JavaScript具有很多優點:
   1.簡單性  JavaScript是一種腳本編寫語言,它採用小程序段的方式實現編程,像其它腳本語言一樣,JavaScript同樣已是一種解釋性語言,它提供了一個簡易的開發過程。它的基本結構形式與C、C++、VB、Delphi十分類似。但它不像這些語言一樣,需要先編譯,而是在程序運行過程中被逐行地解釋。它與HTML標識結合在一起,從而方便用戶的使用操作。
   2.動態性  JavaScript是動態的,它可以直接對用戶或客戶輸入做出響應,無須經過Web服務程序。它對用戶的反映響應,是採用以事件驅動的方式進行的。所謂事件驅動,就是指在主頁中執行了某種操作所產生的動作,就稱爲“事件”。比如按下鼠標、移動窗口、選擇菜單等都可以視爲事件。當事件發生後,可能會引起相應的事件響應。
   3.跨平臺性  JavaScript是依賴於瀏覽器本身,與操作環境無關,只要能運行瀏覽器的計算機,並支持JavaScript的瀏覽器就可以正確執行。
   4.節省CGI的交互時間  隨着WWW的迅速發展有許WWW服務器提供的服務要與瀏覽者進行交流,確瀏覽的身份、需服務的內等等,這項工作通常由CGI/PERL編寫相應的接口程序與用戶進行交互來完成。很顯然,通過網絡與用戶的交互過程一方面增大了網絡的通信量,另一方面影響了服務器的服務性能。服務器爲一個用戶運行一個CGI時,需要一個進程爲它服務,它要佔用服務器的資源(如CPU服務、內存耗費等),如果用戶填表出現錯誤,交互服務佔用的時間就會相應增加。被訪問的熱點主機與用戶交互越多,服務器的性能影響就越大。
   JavaScript是一種基於客戶端瀏覽器的語言,用戶在瀏覽中填表、驗證的交互過程只是通過瀏覽器對調入HTML文檔中的JavaScript源代碼進行解釋執行來完成的,即使是必須調用CGI的部分,瀏覽器只將用戶輸入驗證後的信息提交給遠程的服務器,大大減少了服務器的開銷。
2.JS與Java的區別
     JavaScript語言和Java語言是相關的,但它們之間的聯繫並不像想象中的那樣緊密。
   二者的區別體現在:
   首先,它們是兩個公司開發的不同的兩個產品,Java是SUN公司推出的新一代面向對象的程序設計語言,特別適合於Internet應用程序開發;而JavaScript是Netscape公司的產品,其目的是爲了擴展Netscape Navigator功能,而開發的一種可以嵌入Web頁面中的基於對象和事件驅動的解釋性語言。
   其次,JavaScript是基於對象的,而Java是面向對象的,即Java是一種真正的面向對象的語言,即使是開發簡單的程序,必須設計對象。JavaScript是種腳本語言,它可以用來製作與網絡無關的,與用戶交互作用的複雜軟件。它是一種基於對象和事件驅動的編程語言。因而它本身提供了非常豐富的內部對象供設計人員使用。
   第三,兩種語言在其瀏覽器中所執行的方式不一樣。Java的源代碼在傳遞到客戶端執行之前,必須經過編譯,因而客戶端上必須具有相應平臺上的仿真器或解釋器,它可以通過編譯器或解釋器實現獨立於某個特定的平臺編譯代碼的束縛。JavaScript是一種解釋性編程語言,其源代碼在發往客戶端執行之前不需經過編譯,而是將文本格式的字符代碼發送給客戶,由瀏覽器解釋執行。
   第四,兩種語言所採取的變量是不一樣的。Java採用強類型變量檢查,即所有變量在編譯之前必須作聲明。JavaScript中變量聲明,採用其弱類型。即變量在使用前不需作聲明,而是解釋器在運行時檢查其數據類型。
   第五,代碼格式不一樣。Java是一種與HTML無關的格式,必須通過像HTML中引用外媒體那麼進行裝載,其代碼以字節代碼的形式保存在獨立的文檔中。JavaScript的代碼是一種文本字符格式,可以直接嵌入HTML文檔中,並且可動態裝載。編寫HTML文檔就像編輯文本文件一樣方便。
   第六,嵌入方式不一樣。在HTML文檔中,兩種編程語言的標識不同,JavaScript使用 <script>...</script> 來標識,而Java使用<applet> ... </applet>來標識。
   第七,靜態綁定和動態綁定。Java採用靜態聯編,即Java的對象引用必須在編譯時的進行,以使編譯器能夠實現強類型檢查。JavaScript採用動態聯編,即JavaScript的對象引用在運行時進行檢查,如不經編譯則就無法實現對象引用的檢查。
3.JS的運行環境
    在目前流行的瀏覽器中,Netscape公司的Navigator 2.0以上版本的瀏覽器具都有處理JavaScript源代碼的能力。JavaScript在其中實現了它的1.0版本,並在後來的Navigator 3.0實現了它的1.1版本,在現在推出的Navigator 4.0(Communicator)中,JavaScript在其中實現了它的1.2版本。
   微軟公司從它的Internet Explorer 3.0版開始支持JavaScript。Microsoft把自己實現的JavaScript規範叫做JScript。這個規範與Netscape Navigator瀏覽器中的JavaScript規範在基本功能上和語法上是一致的,但是在個別的對象實現方面還有一定的差別,這裏特別需要予以注意。
4.JS的數據類型和變量
    JavaScript 有六種數據類型。主要的類型有 number、string、object 以及 Boolean 類型,其他兩種類型爲 null 和 undefined。
   String 字符串類型:字符串是用單引號或雙引號來說明的。(使用單引號來輸入包含引號的字符串。)如:“The cow jumped over the moon.” 
  數值數據類型:JavaScript 支持整數和浮點數。整數可以爲正數、0 或者負數;浮點數可以包含小數點、也可以包含一個 “e”(大小寫均可,在科學記數法中表示“10的冪”)、或者同時包含這兩項。 
  Boolean 類型:可能的 Boolean 值有 true 和 false。這是兩個特殊值,不能用作 1 和 0。 
  Undefined 數據類型:一個爲 undefined 的值就是指在變量被創建後,但未給該變量賦值以前所具有的值。 
  Null 數據類型:null 值就是沒有任何值,什麼也不表示。 
  object類型:除了上面提到的各種常用類型外,對象也是JavaScript中的重要組成部分,這部分將在後面章節詳細介紹。 
  在 JavaScript 中變量用來存放腳本中的值,這樣在需要用這個值的地方就可以用變量來代表,一個變量可以是一個數字,文本或其它一些東西。
   JavaScript是一種對數據類型變量要求不太嚴格的語言,所以不必聲明每一個變量的類型,變量聲明儘管不是必須的,但在使用變量之前先進行聲明是一種好的習慣。可以使用 var 語句來進行變量聲明。如:var men = true; // men 中存儲的值爲 Boolean 類型。 
  變量命名:JavaScript 是一種區分大小寫的語言,因此將一個變量命名爲 computer 和將其命名爲 Computer是不一樣的。
另外,變量名稱的長度是任意的,但必須遵循以下規則: 
   1.第一個字符必須是一個字母(大小寫均可)、或一個下劃線(_)或一個美元符 ($)。 
   2.後續的字符可以是字母、數字、下劃線或美元符。 
   3.變量名稱不能是保留字。 
5.JS的語句及語法
    JavaScript所提供的語句分爲以下幾大類: 
   1.變量聲明,賦值語句:var。
   語法如下: var 變量名稱 [=初始值] 
   例:var computer = 32 //定義computer是一個變量,且有初值爲32。
   2.函數定義語句:function,return。 
   語法如下: function 函數名稱 (函數所帶的參數) 
        { 
          函數執行部分 
         }
         return 表達式 //return語句指明將返回的值。 
   例:function square ( x ) 
     { 
       return x*x 
      } 
   3.條件和分支語句:if...else,switch。 
     if...else語句完成了程序流程塊中分支功能:如果其中的條件成立,則程序執行緊接着條件的語句或語句塊;否則程序執行else中的語句或語句塊。     語法如下: if (條件)
         { 
            執行語句1 
          }else{ 
            執行語句2 
          } 
     例:if (result == true)
        { 
          response = “你答對了!” 
         }else{ 
          response = “你錯了!” 
         }
   分支語句switch可以根據一個變量的不同取值採取不同的處理方法。 
   語法如下: switch (expression)
        { 
         case label1: 語句串1; 
         case label2: 語句串2; 
         case label3: 語句串3;
            ... 
         default: 語句串3;
        } 
   如果表達式取的值同程序中提供的任何一條語句都不匹配,將執行default 中的語句。 
   4. 循環語句:for, for...in,while,break,continue。 
     for語句的語法如下: for (初始化部分;條件部分;更新部分)
               { 
                 執行部分... 
                } 
     只要循環的條件成立,循環體就被反覆的執行。 
     for...in語句與for語句有一點不同,它循環的範圍是一個對象所有的屬性或是一個數組的所有元素。
     for...in語句的語法如下: for (變量 in 對象或數組)
                 { 
                   語句... 
                  } 
     while語句所控制的循環不斷的測試條件,如果條件始終成立,則一直循環,直到條件不再成立。 
     語法如下: while (條件)
           { 
             執行語句... 
            }
     break語句結束當前的各種循環,並執行循環的下一條語句。
     continue語句結束當前的循環,並馬上開始下一個循環。
   5.對象操作語句:with,this,new。 
    with語句的語法如下:
             with (對象名稱){
                      執行語句 
                     } 
    作用是這樣的:如果你想使用某個對象的許多屬性或方法時,只要在with語句的()中寫出這個對象的名稱,然後在下面的執行語句中直接寫這個對象的屬性名或方法名就可以了。 
    new語句是一種對象構造器,可以用new語句來定義一個新對象。 
     語法是這樣的:新對象名稱= new 真正的對象名 
     譬如說,我們可以這樣定義一個新的日期對象: var curr= new Date(),然後,變量curr就具有了Date對象的屬性。 
    this運算符總是指向當前的對象。 
   6.註釋語句://,/*...*/。
    //這是單行註釋 
    /*這可以多行註釋.... */ 
6.JS的對象及其屬性和方法
    在JavaScript中是基於對象的編程,而不是完全的面向對象的編程。 
   那麼什麼是對象呢?如果你學過一些VB的編程,對這個名詞一定不會陌生。通俗的說,對象是變量的集合體,對象提供對於數據的一致的組織手段,描述了一類事物的共同屬性。 
  在JavaScript中,可以使用以下幾種對象: 
    1.由瀏覽器根據web頁面的內容自動提供的對象。 
    2.JavaScript的內置對象,如Date,Math等。 
    3.服務器上的固有對象。 
    4.用戶自定義的對象。 
   JavaScript中的對象是由屬性和方法兩個基本的元素的構成的。對象的屬性是指對象的背景色,長度,名稱等。對象的方法是指對屬性所進行的操作,就是一個對象自己所屬的函數,如對對象取整,使對象獲得焦點,使對象獲得個隨機數等等一系列操作。
   舉個例子來說,將汽車看成是一個對象,汽車的顏色,大小,品牌等叫做屬性,而發動,剎車,拐彎等就叫做方法。 
   可以採用這樣的方法來訪問對象的屬性:對象名稱.屬性名稱,例:mycomputer.year=1996,mycomputer.owner = “me”。
   可以採用這樣的方法,將對象的方法同函數聯繫起來:對象.方法名字=函數名字或對象.屬性.方法名,例:this.display=display,document.writeln(“this is method”)。 
   多看或多寫一些程序,就會理解對象的方法和屬性的含義了!各個對象的各種屬性和方法,可點擊參考!
7.JS的事件處理
    事件是瀏覽器響應用戶交互操作的一種機制,JavaScript的事件處理機制可以改變瀏覽器響應用戶操作的方式,這樣就開發出具有交互性,並易於使用的網頁。
  瀏覽器爲了響應某個事件而進行的處理過程,叫做事件處理。 
  事件定義了用戶與頁面交互時產生的各種操作,例如單擊超級連接或按鈕時,就產生一個單擊(click)操作事件。瀏覽器在程序運行的大部分時間都等待交互事件的發生,並在事件發生時,自動調用事件處理函數,完成事件處理過程。 
  事件不僅可以在用戶交互過程中產生,而且瀏覽器自己的一些動作也可以產生事件,例:當載入一個頁面時,就會發生load事件,卸載一個頁面時,就會發生unload事件等。
  歸納起來,必需使用的事件有三大類:
   1.引起頁面之間跳轉的事件,主要是超連接事件。 
   2.事件瀏覽器自己引起的事件。
   3.事件在表單內部同界面對象的交互。 
  各種JavaScript的事件可點這裏參考。
*****************************************************************************************************

玩透彈出窗口 
(http://www.we9703.com/web/js-window/2002129100246.htm)
----------------------------------------------------------------------------------------------------

  經常上網的朋友可能會到過這樣一些網站,一進入首頁立刻會彈出一個窗口,或者按一個連接或按鈕彈出,通常在這個窗口裏會顯示一些注意事項、版權信息、警告、歡迎光顧之類的話或者作者想要特別提示的信息。其實製作這樣的頁面效果非常的容易,只要往該頁面的HTML里加入幾段Javascript代碼即可實現。下面俺就帶您剖析它的奧祕。 

【1、最基本的彈出窗口代碼】 

其實代碼非常簡單: 

<SCRIPT LANGUAGE="javascript"> 
<!-- 
window.open ('page.html') 
--> 
</SCRIPT> 
因爲着是一段javascripts代碼,所以它們應該放在 <SCRIPT LANGUAGE="javascript">標籤和</script>之間。<!-- 和 -->是對一些版本低的瀏覽器起作用,在這些老瀏覽器中不會將標籤中的代碼作爲文本顯示出來。要養成這個好習慣啊。 
window.open ('page.html') 用於控制彈出新的窗口page.html,如果page.html不與主窗口在同一路徑下,前面應寫明路徑,絕對路徑(http://)和相對路徑(../)均可。用單引號和雙引號都可以,只是不要混用。 
這一段代碼可以加入HTML的任意位置,<head>和</head>之間可以,<body>間</body>也可以,越前越早執行,尤其是頁面代碼長,又想使頁面早點彈出就儘量往前放。 

【2、經過設置後的彈出窗口】 

下面再說一說彈出窗口的設置。只要再往上面的代碼中加一點東西就可以了。 
我們來定製這個彈出的窗口的外觀,尺寸大小,彈出的位置以適應該頁面的具體情況。 
<SCRIPT LANGUAGE="javascript"> 
<!-- 
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no') 
//寫成一行 
--> 
</SCRIPT> 
參數解釋: 
<SCRIPT LANGUAGE="javascript"> js腳本開始; 
window.open 彈出新窗口的命令; 
'page.html' 彈出窗口的文件名; 
'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替; 
height=100 窗口高度; 
width=400 窗口寬度; 
top=0 窗口距離屏幕上方的象素值; 
left=0 窗口距離屏幕左側的象素值; 
toolbar=no 是否顯示工具欄,yes爲顯示; 
menubar,scrollbars 表示菜單欄和滾動欄。 
resizable=no 是否允許改變窗口大小,yes爲允許; 
location=no 是否顯示地址欄,yes爲允許; 
status=no 是否顯示狀態欄內的信息(通常是文件已經打開),yes爲允許; 
</SCRIPT> js腳本結束 

【3、用函數控制彈出窗口】 

下面是一個完整的代碼。 
<html> 
<head> 
<script LANGUAGE="JavaScript"> 
<!-- 
function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar= 
no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") 
//寫成一行 
} 
//--> 
</script> 
</head> 
<body οnlοad="openwin()"> 
...任意的頁面內容... 
</body> 
</html> 
這裏定義了一個函數openwin(),函數內容就是打開一個窗口。在調用它之前沒有任何用途。 
怎麼調用呢? 
方法一:<body οnlοad="openwin()"> 瀏覽器讀頁面時彈出窗口; 
方法二:<body οnunlοad="openwin()"> 瀏覽器離開頁面時彈出窗口; 
方法三:用一個連接調用: 
<a href="#" οnclick="openwin()">打開一個窗口</a> 
注意:使用的“#”是虛連接。 
方法四:用一個按鈕調用: 
<input type="button" οnclick="openwin()" value="打開窗口"> 

【4、同時彈出2個窗口】 

對源代碼稍微改動一下: 
<script LANGUAGE="JavaScript"> 
<!-- 
function openwin() 
{ window.open ("page.html", "newwindow", "height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") 
//寫成一行 
window.open ("page2.html", "newwindow2", "height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") 
//寫成一行 
} 
//--> 
</script> 
爲避免彈出的2個窗口覆蓋,用top和left控制一下彈出的位置不要相互覆蓋即可。最後用上面說過的四種方法調用即可。 

注意:2個窗口的name(newwindows和newwindow2)不要相同,或者乾脆全部爲空。OK? 

【5、主窗口打開文件1.htm,同時彈出小窗口page.html】 

如下代碼加入主窗口<head>區: 
<script language="javascript"> 
<!-- 
function openwin() 
{window.open("page.html","","width=200,height=200") 
} 
//--> 
</script> 
加入<body>區: 
<a href="1.htm" οnclick="openwin()">open</a>即可。 

【6、彈出的窗口之定時關閉控制】 

下面我們再對彈出的窗口進行一些控制,效果就更好了。如果我們再將一小段代碼加入彈出的頁面(注意是加入到page.html的HTML中,可不是主頁面中,否則...),讓它10秒後自動關閉是不是更酷了? 

首先,將如下代碼加入page.html文件的<head>區: 
<script language="JavaScript"> 
function closeit() 
{setTimeout("self.close()",10000) //毫秒} 
</script> 
然後,再用<body οnlοad="closeit()"> 這一句話代替page.html中原有的<BODY>這一句就可以了。(這一句話千萬不要忘記寫啊!這一句的作用是調用關閉窗口的代碼,10秒鐘後就自行關閉該窗口。) 

【7、在彈出窗口中加上一個關閉按鈕】 

<FORM> 
<INPUT TYPE='BUTTON' VALUE='關閉' onClick='window.close()'> 
</FORM> 
呵呵,現在更加完美了! 

【8、內包含的彈出窗口-一個頁面兩個窗口】 

上面的例子都包含兩個窗口,一個是主窗口,另一個是彈出的小窗口。 

通過下面的例子,你可以在一個頁面內完成上面的效果。 
<html> 
<head> 
<SCRIPT LANGUAGE="JavaScript"> 
function openwin() 
{OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no"); 
//寫成一行 
OpenWindow.document.write("<TITLE>例子</TITLE>") 
OpenWindow.document.write("<BODY BGCOLOR=#ffffff>") 
OpenWindow.document.write("<h1>Hello!</h1>") 
OpenWindow.document.write("New window opened!") 
OpenWindow.document.write("</BODY>") 
OpenWindow.document.write("</HTML>") 
OpenWindow.document.close()} 
</SCRIPT> 
</head> 
<body> 
<a href="#" οnclick="openwin()">打開一個窗口</a> 
<input type="button" οnclick="openwin()" value="打開窗口"> 
</body> 
</html> 
看看 OpenWindow.document.write()裏面的代碼不就是標準的HTML嗎?只要按照格式寫更多的行即可。千萬注意多一個標籤或少一個標籤就會出現錯誤。記得用OpenWindow.document.close()結束啊。 

【9、終極應用--彈出的窗口之Cookie控制】 

回想一下,上面的彈出窗口雖然酷,但是有一點小毛病(沉浸在喜悅之中,一定沒有發現吧?)比如你將上面的腳本放在一個需要頻繁經過的頁面裏(例如首頁),那麼每次刷新這個頁面,窗口都會彈出一次,是不是非常煩人?:-(有解決的辦法嗎?Yes! ;-) Follow me. 

我們使用cookie來控制一下就可以了。 

首先,將如下代碼加入主頁面HTML的<HEAD>區: 
<script> 
function openwin() 
{window.open("page.html","","width=200,height=200")} 
function get_cookie(Name) 
{var search = Name + "=" 
var returnvalue = ""; 
if (document.cookie.length > 0) { 
offset = document.cookie.indexOf(search) 
if (offset != -1) { 
offset += search.length 
end = document.cookie.indexOf(";", offset); 
if (end == -1) 
end = document.cookie.length; 
returnvalue=unescape(document.cookie.substring(offset,end)) 
} 
} 
return returnvalue; 
} 
function loadpopup(){ 
if (get_cookie('popped')==''){ 
openwin() 
document.cookie="popped=yes" 
} 
} 
</script> 
然後,用<body οnlοad="loadpopup()">(注意不是openwin而是loadpop啊!)替換主頁面中原有的<BODY>這一句即可。你可以試着刷新一下這個頁面或重新進入該頁面,窗口再也不會彈出了。真正的Pop-Only-Once! 

寫到這裏彈出窗口的製作和應用技巧基本上算是完成了,俺也累壞了,一口氣說了這麼多,希望對正在製作網頁的朋友有所幫助俺就非常欣慰了。 

需要注意的是,JS腳本中的的大小寫最好前後保持一致。

****************************************************************************************************
JavaScript
(http://www.lib.tsinghua.edu.cn/chinese/INTERNET/JavaScript/javascr.html)
----------------------------------------------------------------------------------------------------
第 1 集
JavaScript 是什麼? 
    JavaScript是一種新的描述語言,此一語言可以被箝入 HTML 的文件之中。透過JavaScript可以做到迴應使用者的需求事件(如:form 的輸入)而不用任何的網路來回傳輸資料,所以當一位使用者輸入一項資料時,它不用經過傳給伺服端(server)處理,再傳回來的過程,而直接可以被客戶端(client)的應用程式所處理。你也可以想像成有一個可執行程式在你的客端上執行一樣!目前已有一些寫好的程式在Internet上你可以連過去看看,以下有一些計算器的例子,在Nescape上。JavaScript和Java很類似,但到底並不一樣!Java是一種比JavaScript更復雜許多的程式語言,而JavaScript則是相當容易瞭解的語言。 JavaScript創作者可以不那麼注重程式技巧,所以許多Java的特性在Java Script中並不支援。如需相關的更多資訊,可以去讀讀Netscape的有關Netscape JavaScript之介紹。
JavaScript如何執行呢?
    Netscape 2.0 beta 3版以上,就可以執行JavaScript的功能了,我們測試過至少beta 3版以上可以,其他種類的WWW瀏覽器如:Internet Expore 3.0也有此一功能。
範例 1:
以下我們就以一些例子來告訴你如何將JavaScript寫在HTML文件中,並且體會一下新語言的特性,我們從第一個例子開始 
:如何用JavaScript印出一串文字至HTML文件中:
<html>
<head>
My first JavaScript!
</head>
<body>
<br>
This is a normal HTML document.
<br>
<script language="LiveScript">
document.write("這是以 JavaScript 印出的!")
</script>
<br>
Back in HTML again.
</body>
</html>
如果你使用的WWW瀏覽器是Netscape 2.0 beta 3以上版本的話,那你就可以看到相關的結果,而如果你的瀏覽器並非是可 
以支援JavaScript的話,那看起來就會有一些怪怪的了,以上範例的結果如下:
This is a normal HTML document. 
這是以JavaScript印出的! 
Back in HTML again. 
此一範例並沒有太大的用處,它只是要告訴你如何使用<script>的標籤,並如何將它置於HTML的文件之中而已,這個新的標籤你可以特它放在文件中的任何地方。
範例2:
接下來下一個例子所要介紹的是有關函數(function)的使用。請放心,函數並非很難懂的東西,但它卻相當有用。函數通 
常是在HTML文件中<body>的部份被呼叫,而理所當然地,它最好事先被宣告並放在HTML文件中 <body>的部份。好讓在<body>部分中使用到函數時,它已確定被讀取住來。另外,<script>標籤的有關描述語法剖份,你可以用註解的符號將它括起來,以免舊版或無法讀取JavaScript的瀏覽器讀到,而誤會了意思!
<html>
<head>
<script language="LiveScript">
function pushbutton() {
alert("嗨! 你好");
}
</script>
</head>
<body>
<form>
<input type="button" name="Button1" value="Push me" οnclick="pushbutton()">
</form>
</body>
</html>
如果你是使用Netscape 2.0 beta 3以上的瀏覽器,那以上JavaScript語法部份的結果如下,你可以試着按按鈕看看有何結果產生!在範例2中,將會產生一個按鈕,當你用滑鼠去按它的時候,應該會出現一個視窗上面有“嗨!你好的字串,如何?不錯吧!這個結果是如何產生的呢?首先,在<head>內的函數會被載入並存於內存中,接着一個新的<form>標籤<input type ="button".....>將產生一個接鈕。然後,你可以在後面看到'onClick'的指令,這就是告訴瀏覽器,當該按鈕被按時,應會執行onClick後的函數'pushbutton()',而這個函數在剛剛程式被載入時就已安放在記憶體中了!請注意,在這個函數中我們用到了個新東西-alert的method,是JavaScript事先定義好的,它會以對話視窗產生內涵的訊息,並有一"確定"(OK)的按鈕。 JavaScript定義了許多的method,你可以連至Netscape公司去獲取較完整的訊息。我想這些method在不久的將來會有長長的一串可以夠你學的,不過目前的method也已經可以做出相當多東西了!接着下個例子將告訴你如何由一個輸入型表格中讀入使用者的輸入資料,事實上,這也是加入個函數就可以達成的。
範例 3: 
<html>
<head>
<script language="LiveScript">
<!-- hide script from old browsers
function getname(str) {
alert("哈羅! "+ str+"!");
}
// end hiding contents -->
</script>
</head>
<body>
Please enter your name:
<form>
<input type="text" name="name" onBlur="getname(this.value)" value="">
</form>
</body>
</html>
現在你可以試試結果如何: 
請輸入你的名字: 
在這個例子中又有新的東西了。首先,讓我們注意一下,在語法中的註解部分(<!- ... ->)此部分即我們之前所提到的它 
可以避免舊版本或是不支援JavaScript的WWW瀏覽器因爲不認識這些函數而產生錯誤。它的順序應該爲<script>先,接着爲註解的開頭<!-,然後是內容,註解尾->,最後是</script>。另外要注意的一點是,語解尾那一行的開頭雙斜線"//",不可以省略,它代表了JavaScript的註解,若省略了的話,->之前的字會被誤認爲是JavaScript的指令。這個例子可以讓使用者輸入一段文字,然後再輸入完畢後經由<input>標籤中的"onBlur"事件函數偵知,於是呼叫Getname(Str)這個函數來加以取得輸入字串,並將它顯示在對話視窗上!函數Getname(this.value)中的"this.value"是你在文字輸入格式中所輸入的值。
範例4::
這個範例更是帥了!我們在HTML文件檔完成了以後,常會加上一行文件最後修改的日期,現在你可不用擔心每次都要去改 
或是忘了改了。你可以很簡單的寫一個如下的描述語法程式,就可以自動的爲你每次產生最後修改的日期了:
<html>
<body>
This is a simple HTML- page.
<br>
Last changes:
<script language="LiveScript">
<!-- hide script from old browsers
document.write(document.lastModified)
// end hiding contents -->
</script>
</body>
</html>
以上的document.lastModified叄數在Netscape 2.0 beta 2版時是被寫成documeut.lastmodified的,然而,之後的版本就改爲document.lastModified,所以注意一下 ;JavaScript本身是會區分大小寫的,lastmodified與lastModified在它看來是不同的結果。最後,在這一部分結束之前,要提醒你一點,像範例4,的用法並非每一部機器都是一樣的,例如:PC上跑得很正確的,在工作站上不一定會有相同的結果,所以,或許你仍得測一測不同機器的結果纔會有所定論。當然,這一切是因爲 JavaScript還正在發展的原因,最新的訊息還是得去拜訪一下Netscape公司才知道。也許你也不用奇怪,當你隔週再來訪時, JavaScript可能又作了相當大的改變了呢!
第2集
範例5:
    在這一部分首先要爲你展示的JavaScript特性是將你的滑鼠移到這個不同顏色的連結上面,此時看看瀏覽器下的狀態列有何結果。然後這樣的功能我們可以與JavaScript的功能相結合。好,現在再將你的滑鼠移到本處不同顏色的連結上面,你應該會發現有一個視窗出現,是吧?!如何!怎麼做到的呢?以下就是這一個連結的作法:<ahref="tpage.htm"onMouseOver="window.status='Justanotherstupidlink...';returntrue">在這兒你只要在傳統<a>的標籤中加入onMouseOver的method,就可達成你要的效果了。這裏的window.status是用來讓你可以在WWW瀏覽器的狀態列上顯示一些訊息用的。在語法中,你可以看到訊息部分是用'括起來的部分,而非以"括起來,在訊息部分結束之後,必須加上;returntrue。好了,利用以上的特性可以很簡單的完成第二個連結的例子!相當簡單,以onMouseOver的method然後配合事件發生時去呼叫函數hello()就行了,不再多加解釋了,作法如下:
<html>
<head>
<script language="LiveScript">
<!--Hiding
function hello(){
alert("哈羅!");
}
</script>
</head>
<body>
<a href="" onMouseOver="hello()">link</a>
</body>
</html>
範例6: 
接下來我們要告訴你一個使用日期和時間的例子。在第一部分中,你已看過了lastModified的用法和作法。現在要告訴你 
的並非是印出網路上伺服器或文件修改日期,而是你個人客戶端機器的日期和時間。以下就是執行結果:現在時間是:14:52今天日期爲:11/28/2003做法如下:
<script language="LiveScript">
<!-- Hiding
today = new Date()
document.write("現在時間是:",today.getHours(),":",today.getMinutes())
document.write("<br>今天日期爲:", today.getMonth()+1,"/",today.getDate(),"/",today.getYear());
// end hiding contents -->
</script>
在本例中,我們必需首先建立一個日期變數,這可以由today = new Date()來完成。如果沒有特別指定時間與日期的話,瀏覽器將會採用本地客戶端機器的時間,若將它放入變數today中。這兒要注意的是:我們並沒有宣告today這個變數的型態,這和 Java或其他的程式語言在用到變數之前必需先加以宣告的方式有相當大的不同。在完成today的日期變數後,我們等於建立了一個具有本地時間與日期的物件(object)。接着就可以使用get... 的method以取得today這個物件的時間和日期。請注意etMonth這個method所取得的月份範圍是由0~11,所以必須加1以代表真正的1月至12月。看完以上的例子後,想想你可以使你的文件變得有點智慧,例如:某個文件有時效限制的話,你可以利用我們在上一部份的範例4中所提到的功能和這一個範例中所學習到的功能,設計一個讓你的文件在第10天以後讀到的話就會告訴讀者:"喂!這篇已過時了!"的程式,試試看,並不難!除以上功能外,在建立日期物件時你也可以事先設定日期如下:docStarted = new Date(96,0,13)首先是年(西元),接着是月(但記得減1),再接着是日。同樣的方法也可以加上時間的設定,如下:docStarted = newDate(96,0,13,10,50,0)前三個是日期的年、月、日,接着是時、分、秒。最後,我們必須提醒你,JavaScript並沒有實際的日期型態,但是它卻能毫不費力地顯示出日期和時間,原因是它是從1/1/1970 0:0h 開始以ms(milli seconds)來計算目前的時間的,這聽起來似有些複雜,但你倒不用擔心,它有標準的共用函數可以計算,你只要知道如何用就可以了!
範例7: 
    接下來我們要爲你介紹一個可以產生亂數的函數,也是以JavaScript所寫的。這個函數只是利用了一點小技巧而已,而這種技巧在大部分的編譯器(compiler)中,大都是如此(或類似)計算出亂數來的。我相信JavaScript最後應也會以相似的方法來產生這樣的method,如果它會提供這樣功能的話。以下是此函數的結果:這是一個計算產生的亂數:0.9210622808328227以下是這個作法的寫法:
<html>
<head>
<script language="LiveScript">
function RandomNumber() {
today = new Date();
num = Math.abs(Math.sin(today.getTime()));
return num; 
}
</script>
</head>
<body>
<script language="LiveScript">
<!--
document.write("This is a random number:", RandomNumber());
// -->
</script>
</body>
</html>
我們的做法是以上一個範例中的時間函數;它會出現一個很大的數,利用這個數再加以運算即可!例如:將它拿來做正弦函數(sin)的運算,得到的數再做絕對值的運算,結果可以得到一個介於0與1間的實數。因爲時間的改變是ms爲單位,而且你絕不會獲得相同的數字。不過這個做法並不適合拿來快速的連續產生一系列的亂數,但如果你是不定時,久久的用一次,那效果就不錯了! 
範例8:
JavaScript的一個重要特點是它可以製作視窗。你可以產生一個的視窗,並且在此視窗中載入HTML文件,完全以 JavaScript來航遊網際網路(Internet )。接下來的範例就是告訴你如何開啓一個視窗並且寫點東西進去,你可先試試按一下範中之接鈕看看!原始程式如下:
<html>
<head>
<script language="LiveScript">
function WinOpen() {
msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");
msg.document.write("<HEAD><TITLE>哈 羅!</TITLE></HEAD>");
msg.document.write("<CENTER><H1>酷 斃 了!</H1><h2>這 是<B>JavaScript</B>所 開 的 視 窗! 
</h2></CENTER>");
}
</script>
</head>
<body>
<form>
<input type="button" name="Button1" value="Push me" οnclick="WinOpen()">
</form>
</body>
</html>
這兒你又看到用按鈕來啓動函數。這次的函數WinOpen()是藉着一個open的method來產生一個新的視窗。第一對雙引號("")是用來描述欲載入至視窗中的文件URL位置。如果留者空白的話,那就會呈現一個空白視窗,並可以透過JavaScript寫入東西!下一對雙引號內的內容是這個新開啓視窗的名字,你可以喜歡給它任意一個名字,但不可加入空白,如用Display Window的話便會出現錯誤訊息,請注意。接下來的一連串雙引號內所指定的是該視窗的相關性質(properties),這些蠻有趣的,你可以指定要不要有工具棒(toolbar)、卷軸(scrollbar),等等,例如:如果你寫toolbar = yes,那就會在你所產生出來的視窗中出現一排工具列。以下有許多你可以改變的視窗特性,請注意它們字中間不可以有空白:
toolbar
location
directories
status
menubar
scrollbars
resizable
copyhistory
width=pixels
height=pixels
以上的pixels部分,你可以填入點數的數值,這數值是告訴瀏覽器這個視窗的大小。在開啓視窗,並且將它稱爲msg以後,就可以開始寫些東西到視窗中了。你可以寫入一般正規的HTML語法文字。哇!這可不得了了,也就是說,你可以利用先前使用者在form表格中輸入給你的文章直接將它迴應至瀏覽器上來了!這些功能在幾個月前大概還只能用CGI才能達到喔!現在你不用CGI也可以做了!希你能對我們的介紹感到還算不錯。由於JavaScript尚未完全發展完成,並且很可能會再繼續地做一些更動,希這兒的範例到時都還能執行,在JavaScript更多特性完成後,我們也會繼續地再爲你介紹一些新的範例的!
第三集
    曾有許多網友問我有關JavaScript與框架(爲求方便,以下均用frame表示)合用的問題。事實上,若您同時想用frames和 JavaScript的功能,首先您必需擁有Netscape Navigator 2.0(或以上)瀏覽器(至少目前是如此)。當然也有某些瀏覽器支援 frames的功能--如:Oracle開發的PowerBrowser,但此瀏覽器還只是Beta版,目前尚不支援JavaScript。首先,我稍微解釋一下 frames的功用。因爲frames功能纔開發不久,仍有許多HTML文件中未使用這項新功能。Frames最主要功用是"分割"您的視窗,使每個"小視窗"(frame)能顯示不同的HTML文件(譯按:這有點類似電視的子母畫面)。更妙的是,不同frame之間可以互動(interact),也就是不同frame之間可以交換訊息與資料(information)。例如:假設您開了兩個frames,第一個frame可顯示普通 HTML文件,第二個rame可顯示工具列(toolbar)。此工具列中可包含瀏覽您homepage所需的各種按鈕。如此一來,即使第一個 frame載入了另一個HTML文件,您仍可在第二個frame中看到工具列。現在我先將上述特性展示給您瞧瞧。請按一下下面的按鈕,看一看frames的長相。(如果您是線上觀看此文件,您可能需稍候一下才看得到結果,因爲scripts必需由server中載入到您的機器)。以下是此frame的寫法:
<HTML>
<HEAD>
<title>Frames</title>
</HEAD>
<FRAMESET ROWS="50%,50%"> 
<FRAME SRC="frtest1.html" name="fr1"> 
<FRAME SRC="frtest2.html" name="fr2"> 
</FRAMESET> 
</HTML> 
首先您必須告訴瀏覽器您要開幾個frame?這是由<frameset...>這個標籤(tag)來宣告。rows這項叄數是告訴瀏覽器您想將視窗分割成幾列?而cols這項叄數是告訴瀏覽器您想將視窗分割成幾行?您也可以用很多組的<frameset...>tags將視窗分割得更復雜。以下是Netsacpe所提到的一個範例:
<FRAMESET COLS="50%,50%"> 
<FRAMESET ROWS="50%,50%"> 
<FRAME SRC="cell.html"> 
<FRAME SRC="cell.html"> 
</FRAMESET> 
<FRAMESET ROWS="33%,33%,33%"> 
<FRAME SRC="cell.html"> 
<FRAME SRC="cell.html"> 
<FRAME SRC="cell.html"> 
</FRAMESET> 
</FRAMESET> 
上面這個例子產生了兩行,而且第二行又分割成三列大小相等的空間。在第一個<frameset>tag中的50%,50%兩項叄數是用來表是frame的大小。您可以給每個frame一個"名字"(name)。frame的名字在JavaScript語法中的地位非常重要。在本章的第一個範例中您已學到如何替frame命名。接下來您可以用<frame>tag告訴瀏覽器您要載哪一個HTML文件。我想您已瞭解frames的基本用法,接下來我們再看一個有趣的範例:上面的按鈕將顯示:按某個frame中的按鈕後,會在另一frame中寫入文字。以下是此功能的原始碼:在產生frames效果之前,您需先製作下列原始碼(frames.html):
<HTML>
<HEAD>
<title>Frames</title>
</HEAD>
<FRAMESET ROWS="50%,50%"> 
<FRAME SRC="frame1.html" name="fr1" noresize> 
<FRAME SRC="frame2.html" name="fr2"> 
</FRAMESET> 
</HTML>
以下是frame1.html的原始碼:
<HTML>
<HEAD>
<script language="JavaScript">
<!-- Hiding
function hi() {
document.write("嗨!<br>");
}
function yo() {
document.write(" !<br>");
}
function bla() {
document.write("啦 啦 啦<br>");
}
// -->
</script>
</HEAD>
<BODY>
這是第一個frame!
</BODY>
</HTML>
以下是frame2.html的原始碼:
<HTML>
<body>
這是第二個frame!
<p>
<FORM NAME="buttonbar">
<INPUT TYPE="button" VALUE="嗨" onClick="parent.fr1.hi()">
<INPUT TYPE="button" VALUE=" " onClick="parent.fr1.yo()">
<INPUT TYPE="button" VALUE="啦" onCLick="parent.fr1.bla()">
</FORM>
</BODY>
</HTML>
哇!這些語法越來越長了!上述的語法是如何運作的呢?當使用者載入第一個檔案(frames.html)後,將會產生兩個frame,並且在第一個frame(命名爲fr1')中載入frame1.html,而在第二個frame(命名爲'fr2')中載入frame2.html。到目前爲止都只是普通的HTML語法。或許您已發現在frame1.html中包含了JavaScript語法,但此JavaScript並沒有馬上被執行。難到這些函式(functions)是不必要的?亦或是我得刪除這些不必要的函式?雖我是散慣的人,但這些函式確實是必須的。它們是被位於frame2.html中之JavaScript語法所呼叫而執行的。我在frame2.html中利用JavaScript語法制作了三個按鈕,製作按鈕來呼叫函式的方法我已在第一章提過,相信您對onClick的用法已相當熟悉。但是......parent.fr1是幹嘛用的?若您對物件觀念已相當瞭解,相信它對您不是甚麼新鮮事。您可以看到frames.html同時呼叫frame1.html與frame2.html兩個檔案,所以frames.html稱爲 frame1.html與frame2.html的parent(請恕我直接用英文)。同理,這兩個新的frame就稱爲frames.html的child-frames。您可將這種複雜關係想像成階層式架構(hierarchy)。以下我藉助一個小'圖'來釐清這種關係:
frames.html parent
/ \
/ \
/ \
fr1(frame1.html) fr2(frame2.html) children
當然您可依此類推,產生一些'grandchildren' frames。(當然,這並不是正式的名稱):
frames.html parent
/ \
/ \
/ \
fr1(frame1.html) fr2(frame2.html) children
/ \
/ \
/ \
gchild1 gchild2 'grandchildren' 
若您想由frame2.html呼叫parent-frame中的任何函數,您只要將parent放在您欲呼叫函數名稱之即可。同理,若由parent-frame呼叫位於frame1.html中的函數,您只需將fr1放在被呼叫函數稱之前。爲什麼用fr1呢?原因是我們在frames.html中開了兩個frame,而且將它們分別命名爲fr1和fr2。所以我用fr1代表第一個frame(frame1.html)。接下來的步驟就相當容易了。當我們欲由frame2.html(命名爲fr2)呼叫第一個frame中的函式時該怎麼做?由上面的"小圖"您可以發現,frame1.html和frame2.html之間並無直接關連(connection),因此您不可以"直接"由frame2.html呼叫位於frame1.html中的函式。您必須透過parent-frame來呼叫它,所以正確指標(index)應爲parent.fr1。例如若您想由frame2.html呼叫hi(),您必須寫成parent.fr1.hi()。這也就是爲什麼frame2.html中的onClick要寫成那種樣子的原因了。對了!附帶提一點小東西。您或許已發現本章中都用script language="JavaScript">代替前兩章用的<script language="LiveScript">。其實此二者間並沒什麼差別。但起初JavaScript被植入Netscape瀏覽器時,您只能用LiveScript語法。(這是一種由Netscape發展的舊語法,和JavaScript極爲類似)。我想既然我們討論的是JavaScript函式,就應使用JavaScript語法。(這只是我的一己之見,在'JavaScript-society'中有許多關於LiveScript的討論,目前也是衆說紛紜....)在此我要花一點時間討論一個很多人關心的問題。當您觀賞一個擁有數個frame的網頁時,若您想link至internet其它網頁,這些frame並不會消失而且會帶來視覺上的干擾。這些討厭的frame應該如何消除呢? 您只要在您的<a href...>tag中加入TARGET="_top"就可解決這個困擾。方法如下:<a href="goaway.html" TARGET="_top">如果您不想觀賞我的網頁了</a>當然,您必須在您想要獲得此效果的link中都加入TARGET="_top" 。若想要整個網頁中的ink都有此效果,您可在此網頁的head中加入<base target="_top">較方便。如此一來每個link被按下都可將frame消除。
第四集
    這章我將告訴您如何在狀態列 (statusbar) (也就是您瀏覽器最下方顯示 URLs 的那一行) 顯示文字,並且將教您 '跑馬燈' (以下簡稱 scroller ) 的工作原理。雖然以 JavaScript 完成的 scroller 目前仍有些問題 (稍後會提到問題在哪兒?),但我還是告訴您它是如何寫成的。首先,如何將文字填入statusbar 呢?下述語法將告訴您如何做到這項功能: (按下按鈕後請注視statusbar的變化)很新奇吧! 請看看原始碼 : 
<html>
<head>
<script language="JavaScript">
<!-- Hide
function statbar(txt) {
window.status = txt;
}
// -->
</script>
</head>
<body>
<form>
<input type="button" name="look" value="寫入文字" οnclick="statbar('嗨 ! 這就是狀態
列 (statusbar) !');">
<input type="button" name="erase" value="清除文字" οnclick="statbar('');">
</form>
</body>
</html>
我製作了兩個都會呼叫 statbar(txt) 函式 (function) 的按鈕。當此函式被呼叫後,字串經由括弧中的變數 txt 傳給 
statbar(txt)。 (不一定要用 txt,用別的變數名也可以)。當電腦執行到 <form> tag 時,一旦按下按鈕就會呼叫 statbar(txt)。但是電腦並沒有馬上將 txt 的內容寫在 statusbar,只是將欲顯示的字串存入 txt。換句話說,藉由呼叫函式,只是讓變數 txt 得到一個值。因此當您按下 '寫入文字' 這個按鈕後,會呼叫 statbar(txt) 而且 '嗨 ! 這就是狀態列 (statusbar) !' 這個字串會存入 txt 中。咻 ! 講了這麼多隻是想告訴您這種寫法可預留一些彈性。什麼彈性呢?就是您可重複使用 txt 這個變數。您看看第二個按鈕,它也是呼叫相同的函式。若您不利用一個變數來傳遞字串的話,就必須寫兩個不同的函式了。那麼statbar(txt) 到底做了些什麼?其實沒什麼,只是將 txt 的內容寫入變數 window.status中。這是由window.status = txt; 做的。另外若想消除文字,只需送一個空字串 ('') 給 statusbar。請注意,因爲在onClick 中我們已經使用雙引號 " ,所以這裏必須用單引號 ' 。這是爲了讓瀏覽器辨認哪兩個引號是一對的,因此您必需雙引號和單引號交替使用。由此份簡介文件第二章您已學過 onMouseOver 的特性了 :<a href="tpage.html" onMouseOver="window.status='Just another stupid link...'; return true">您可能會對一件事感到厭煩。那就是當 mouse 的指標已從 link 移開了,但是statusbar 中的文字還留在那!沒關係,我教您一個解決的辦法。利用上面教您如何消除 statusbar 中文字的方法,我們來寫一個小函式。但是如何偵測出 mouse 的指標已從 link 移開並進而呼叫消除文字的函式呢?偵測 mouse指標是否已從 link移出的功能目前還無法達到,但可用 "計時器" 來暫時解決此問題。試試將 mouse 移到此 link 上看看statusbar 的變化,但請不要按它。怎麼樣?很棒吧!看看下面的原始碼您就知到這東西很簡單。 
<html>
<head>
<script language="JavaScript">
<!-- Hide
function moveover(txt) {
window.status = txt;
setTimeout("erase()",1000);
}
function erase() {
window.status="";
}
// -->
</script>
</head>
<body>
<a href="dontclck.html" onMouseOver="moveover('瞬間即逝 !');return true;">
link</a>
</body>
</html>
這script 的許多部份相信您已瞭解。moveover(txt)其實和先前的statbar(txt)差不多。erase()也和先前所討論的相同。在 HTML 網頁中的 <body> tag 裏我們加入一個具有 onMouseOver 功能之 link。當 mouse指標移至 "link" 上就會呼叫moveover(txt),並且利用 txt 變數傳遞字串 '瞬間即逝 !'。接下來的步驟就和statbar(txt) 一樣, window.status 收到 txt 的值後將之顯示在 statusbar 上。而 setTimeout(...)這項新函式是用來作爲一個 "定時器"。setTimeout(...)能作些什麼事呢?它的主要特性是當某段設定的時間 "跑"完了之後,便執行某函式。在這個例子中,於 1000 毫秒後 (也就是 1 秒後)就會執行 erase()。換句話說,當 1 秒結束後 moveover(txt) 的功能就會因 erase()的自動執行而停止。雖然規定時間 "跑"完後定時器並不會重新啓動,但您可以在 erase() 中再用一次setTimeout(...) ,使其循還不斷,看起來就像一個跑馬燈(scroller)。您已學到了 setTimeout 的功能和如何在 statusbar 中顯示文字,接下我將教您如何製作一個在statusbar 顯示的 "跑馬燈" (scroller)。請按下方的按鈕看看我做的 scroller。由於 script 需由 server載入到您的電腦中,因此這要花一點時間,請耐心等一下。以下是原始碼 : 
<html>
<head>
<script language="JavaScript">
<!-- Hide

var scrtxt="怎麼樣 ! 很酷吧 ! 您也可以試試."+"Here goes your message the visitors 
to your page will "+
"look at for hours in pure fascination...";
var lentxt=scrtxt.length;
var width=100;
var pos=1-width;

function scroll() {
pos++;
var scroller="";
if (pos==lentxt) {
pos=1-width;
}
if (pos<0) {
for (var i=1; i<=Math.abs(pos); i++) {
scroller=scroller+" ";}
scroller=scroller+scrtxt.substring(0,width-i+1);
}
else {
scroller=scroller+scrtxt.substring(pos,width+pos);
}
window.status = scroller;
setTimeout("scroll()",150);
}
//-->
</script>
</head>
<body onLoad="scroll();return true;">
這裏可顯示您的網頁 !
</body>
</html>
上面script用的語法相信大部份您已經懂了。setTimeout(...)"告訴"計時器當時間到了就呼叫scroll()。如此一來 scroller便會向前移動一步。在 script 的開頭有許多計算式,那是用來決定文字開始顯示的位置,了不瞭解並不重要。一旦決定了文字的啓始位置,就必需加些空格 (space) 以使文字能顯示在正確位置。在此章一開始我曾提到,此種scroller並不是很受歡迎。即使是,也不會持續很久。爲什麼呢? 下面我列出幾個主要原因:當第一次看到 scroller 或許您會覺得很新奇,但久而久之便會覺得索然無味。當然,這是所有 "酷玩意兒"(cool trick) 皆有的現象。其實這還不是主要原因,更嚴重的問題還在後頭呢 ! 當您移動 mouse 時,您可以發現 scroller 的速度改變了 (至少在我的機器上是如此)。尤其當您更改 setTimeout 的值爲使scroller 跑快一點時,這種情況更嚴重。不過這問題或許還有解決方法。更糟的是若讓 scroller 跑久一點,會出現 Out of memory error的問題 ! 天呀 ! 這是 Netscape Navigator 2.0 的一個 "臭蟲" (bug)。我們期待新的版本能更正此 bug (譯按 : Netscape Navigator Atlas Preview Release 已更正此 bug)。在網路上有許多這方面的應用,您可以試着找找。我曾經看過有人將 scroller 放在 Homepage 中,這應該不會太難。(譯按 : 有興趣的人可叄考目錄中本人所製做的 scroller)
第五集
    陣列(arrays)的運用是程式設計中一項種要的技術。每一種程式語言均以某種特定方式來表示陣列。或許您已瞭解陣列在程式設計中的好處,但翻遍Netscape所提供的文件,並沒有提及如何使陣列。這是因爲JavaScript並不支援陣列。但是現在我將教您如何在JavaScript中使用陣列。首先,陣列是幹用的?您可以把它看成一長串的變數(variables)。假設您現在需要宣告 10個變數,您可以一個個將10個變數宣告爲a,b,c...,但當您需要100個或更多的變數時,這種方法將會得很麻煩。若您使用一個擁有10個元素(elements)的陣列(暫且命名爲'MyArray')來表示這10個變數,則可以用MyArray[1],MyArray[2],MyArray[3]...分別代表第一,二,三....個變數(很多程言是從0開始當作第一個元素,但在JavaScript語法中是從1開始)。因此若您想將第一個元素(或稱變數)的值指定爲17,您只要寫成MyArray[1]=17即可。由此可看出陣列的功用和一般變是相同的。不光如此,若您想將所有元素的值均指定爲17,您只要寫一個簡單的圈(loop)即可:for(var i=1;i<11;i++)MyArray[i]=17for-這個指令是告訴電腦其後的指令總共要執行幾次。for-圈是從1開使,也就是電腦會先執行MyArray[1]=17。然後i會增加1並接着執行 MyArray[2]=17。i每次遞增1直到i=10爲止。接下來教您如何做陣列的初始化(initialization)。這個問題曾在JavaScript Mailinglist中討論過。(如果您想訂閱mailing list,您只要在e-mail中填入subscribe javascript-digest並寄到[email protected]即可。接着您每天就會收到一到二個約20-30kB的大檔案,這些檔案包括所有來自JavaScript-list的信件)。 
function initArray() {
this.length = initArray.arguments.length
for (var i = 0; i < this.length; i++)
this[i+1] = initArray.arguments[i]
}
您不需要了解這個函式(function)的意義,您只要知道怎麼用就好。如果您要宣告一個擁有三個元素的陣列,且其值分別指定爲17,18,19,您只要寫成:var MyArray= new initArray(17,18,19)。您也可以用字串strings)當作元素的值:var heyho= new initArray("This","is","酷")。因此您不必管元值的型式(type),即使混着用也行:var Mixedup=new initArray(17,"yo", 103)。下面我將對一個陣列'Mixedup'作初始化,並顯示陣列的內容:
Element No. 1: 17
Element No. 2: yo
Element No. 3: 103
其原始碼如下:
<script language="JavaScript">
<!-- Hide
var Mixedup= new initArray(17,"yo",103);
document.write("Element No. 1: "+Mixedup[1]+"<br>");
document.write("Element No. 2: "+Mixedup[2]+"<br>");
document.write("Element No. 3: "+Mixedup[3]+"<br>");
// --> 
</script>
當我昨天寫一個小遊戲時,我遇到一個您也可能會碰到的問題。當您想清除視窗或frame中的內容時, 
Netscape文件中提到了一個函式可用--'document.clear()'。但當您將此函式寫入網頁中,它並不會如預期的清除視窗或frame中的內容。而且document.clear()在各種平臺(platform)上似都無效。Gordon McComb告訴我一個清除視窗或frame中內容的好方法,您可以試試:
document.close();
document.open();
document.write("<P>");
您不一定要寫最後一行document.write("<P>");,只有當您想在視窗中寫入某些東西時才需要加入此行。上述方法對frame亦有效。接下來我們談一個可以讓您在不同文件之間穿梭的語法--back()和forward()兩個函式。通常我們在網頁中加的back-link和Netscape-Navigator中的"Back鍵"功能上並不相同。Netscape-Navigator中的"Back鍵"是回到您history list中的上一頁。您現在也可利用JavaScript做到相同的功能。只要按下此link,您可以再度回到此頁。JavaScript語法的原始碼如下:
<html>
<body>
<FORM NAME="buttonbar">
<INPUT TYPE="button" VALUE="Back" onClick="history.back()">
<INPUT TYPE="button" VALUE="JS- Home" onClick="location='script.html'">
<INPUT TYPE="button" VALUE="Next" onCLick="history.forward()">
</FORM>
</body>
</html>
您也可以用history.go(-1)和history.go(1)代替.
第六集
    許多網友問我一個有趣的問題:如何用mouse按一下便可同時載入兩頁文件。基本上有三種方法可以達到這種功能。第一種方法是製作一個按鈕,讓使用者按下後去啓動一個能同時將兩份件載入不同frames或新視窗的函式(function)。若您曾經看過此份簡介文件的其它章節的話,我相信您可以很輕易寫出這種語法:我們製作了三個frame,第一個frame中包含了一個按鈕。請注意,第一個HTML檔案只是用來打開frame和給予每個frame一個名字。若您還不清楚JavaScript和frame的關係,可以先閱讀第三章。不過在此還是照例讓您瞧瞧原始碼(不知您是否在很多電腦書籍中遇到一個相同的困擾,那就是作者常把一些自認很簡單的東西忽略不提,結果那些東西正是讀者搞不懂的地方!所以,若您對我提的東西已很瞭解,請發揮一下您的耐性:-)frames2.html
<HTML>
<HEAD>
<title>Frames</title>
</HEAD>
<FRAMESET COLS="295,*"> 
<FRAMESET ROWS="100%,*"> 
<FRAME SRC="loadtwo.html" NAME="fr1"> 
</FRAMESET> 
<FRAMESET ROWS="75%,25%"> 
<FRAME SRC="cell.html" NAME="fr2"> 
<FRAME SRC="cell.html" NAME="fr3"> 
</FRAMESET> 
</FRAMESET> 
</HTML>
第一個frame會載入loadtwo.html併產生一個按鈕:loadtwo.html
<HTML>
<HEAD>
<script language="JavaScript">
<!-- Hiding
function loadtwo(page2, page3) {
parent.fr2.location.href=page2;
parent.fr3.location.href=page3;
}
// -->
</script>
</HEAD>
<BODY>
<FORM NAME="buttons">
<INPUT TYPE="button" VALUE="同 時 載 入 兩 份 文 件" onClick="loadtwo('frtest1.html',
'frtest2.html')">
</FORM>
</BODY>
</HTML>
按下按鈕後,電腦會傳遞兩個字串給loadtwo()並將之啓動。由loadtwo()中可以看出,第一個字串是用來定義第二個frame fr2所載入文件的位址和檔案名。若您想定義另外的按鈕來載入不同的文件,您可以重複使用此函式。只要將文件的URLs(addresses)傳給loadtwo()即可。接下來談談用hyperlinks同時載入兩頁文件的第二種方法。在Internet上您可以發現許多網頁使用<a href="yourlink.html" onCLick="yourfunction()">來達上述提及的功能。但此語法並不能在所有平臺上均正常執行,因此最好不要用此語法。現在我告訴您另一種寫法:我們可改用下述JavaScript語法:<a href="javascript:myfunction()">My Link</a>此種方式非常簡單而且在所有瀏覽器中均能正常執行。您只要寫上javascript:並加上您想聯結的函式名即可。若此函式名稱設爲'loadtwo()',那您就可藉由按下此hyperlink來達到同時載入兩份文件的目的了。再接着談談用mouse按一下便可同時載入兩頁文件的第三種方法,此方法可以以hyperlinks或按鈕來執行。您可先在第二個frame中載入一個HTML文件:<a href "getfr2.html" target="fr2">請按這裏!</a>然後在此文件中(getfr2.html)加入onLoad這項指令,用來觸發第三個frame載入另一份文件。如此一來便可同時載入兩份文件。getfr2.html檔的原始碼如下:
<HTML>
<BODY onLoad="parent.fr3.location.href='getfr3.html'; return true;">
文 件 內 容.....。
</body>
</html>
當然,您必須在所有會被載入到第二個frame的文件中加入onLoad這項指令。另一個常遇見的問題是如何開一個新視窗並載入文件?我們想達到的效果是當使用者按一下mouse便會'彈'出一個新視窗。很簡單,只要在<a href...>中利用target這項特性就可達到此效果。例如:<a href="goanywhere.html" target="Resource indow">Go!</a>現在我將談談在JavaScript中幾種常用的運算子(operator)。運算子可以使您的JavaScript 法更精簡。假設您想測試變數x是否大於3且小於10,您可寫成:
if (x>3)
if (x<10)
doanything();
當滿足x>3且x<10時,就會執行doanything()。還有一種更精簡的寫法:if (x>3 && x<10) doanything();' &&'稱爲AND-運算子。還有另一種被稱爲OR-運算子的東東可讓您用來檢視是否變數x等於5或變數y等於17:if(x==5 || y==17)doanything();當滿足x==3或y==17時,就會執行doanything()。當然,當兩者皆成立時也會執行doanything()。在JavaScript中是利用==來做比較的工作(其它尚有<,>,<=和>=),這些都和C/C++的語法相同。另外單一'='是用來將數值存入變數用的。(在Pascal語法中將數值指定給變數是用:=,而做比較是用單一的'=',這和JavaScript語法有點不同)若您想利用'不等於'這項特性,您可以用!=。例如:x!=17.尚有許多可以精簡您的JavaScript語法的運算子,去翻翻Netscape的文件吧!
第七集
    輸入表單(form)對某些Internet上的網頁而言是很重要的。通常form的輸入內容會被送回server中做處理。JavaScript具有確認輸入值的功能,可以事先確保這些值是屬於"合法的",進而避免將錯誤的輸入值送回server。首先我將告訴您如何對 form的輸入做確認的工作,再來我將會提到用JavaScript將資料送回server的可能性。咱們開始吧!我先寫一個簡單的語法。在下面我加了兩個text-元件(element),請將您的大名寫入第一個空格,並將您的e-mail address寫入第二個空格。您可在這兩個空格中任意輸入並按下按鈕。您也可以不輸入任何東西就按下按鈕試試 ! 
請輸入您的大名:
請輸入您的e-mail address:
對第一個空格而言,若您沒有鍵入任何東西,電腦便會出現一個錯誤訊息,並請您再輸入一次。當然,此空格會把任何輸入的字串都視爲"合法的"輸入,它無法辨認出您輸入的名字是正確的或是胡的。即始您輸入的是數字,它也會把此數字當成您的大名。例如您輸入'17',它將會顯示'嗨!17'。第二個空格就設計得稍微複雜一點了。您可試着輸入一個簡單的字串-例如您的大名,它將會顯示錯誤訊息,並請您再輸入一次(除非您輸入的字串含有@...)。這個空格的確認標準是檢視您輸入的字串中是否含有@。即使只輸入一個@,它也會被視爲合法的輸入---雖然這也不是正確的e-mail address。所有Internet的e-mail address皆含有@,因此對e-mail address輸入值做此種確認工作是很適合的。接下來看看上述功能的原始碼吧:
<html>
<head>
<script language="JavaScript">
<!-- Hide

function test1(form) {
if (form.text1.value == "")
alert("您 沒 寫 上 任 何 東 西, 請 再 輸 入 一 次 !")
else { 
alert("嗨 "+form.text1.value+"! 您 已 輸 入 完 成 !");
}
}

function test2(form) {
if (form.text2.value == "" || 
form.text2.value.indexOf('@', 0) == -1) 
alert("這 不 是 正 確 的 e-mail address! 請 再 輸 入 一 次 !");
else alert("您 已 輸 入 完 成 !");
}
// -->
</script>
</head>

<body>
<form name="first">
Enter your name:<br>
<input type="text" name="text1">
<input type="button" name="button1" value="輸 入 測 試" onClick="test1(this.form)">
<P>
Enter your e-mail address:<br>
<input type="text" name="text2">
<input type="button" name="button2" value="輸 入 測 試" onClick="test2(this.form)">
</body>
先看看body-之後的HTML語法。我們嵌入了兩個text元件和兩個按鈕。第一個按鈕呼叫test1(...),第二個按鈕呼叫test2(...)。this.form這個變數會將此form的名字(在此例中就是first)傳給函式(function),以便能正確將元件"定址"(address)。 test1(form)的功用在於檢查您是否輸入字串(亦即檢查是否爲"空字串")?此項工作是由if(form.text1.value=="")...所執行。'form'這個變數將會接收由'this.form'所傳來的值。但我們何在test1(...)中抓取我們所輸入的字串呢?您可利用'value'這個變數再加上'form.text1'來抓所輸入的字串然後將它和""比較,檢查是否爲"空字串"。若是"空字串"則表示並無輸入任何東西,那麼Netscape將會出現警告並要求您再輸入一次。若test1(...)檢查結果並非"空字串",則會出現"您已輸入完成!"的訊息。請注意,即使只輸入一個空白(space),test1(...)也會將之視爲合法輸入。當然,您也可以略施小技來排除上述可能性,我相信這很容易。現在請看test2(form)。在此函式中我們利用相同的方法來檢測輸入值是否爲空字串,但是我在if-指令中加入了額外的檢測功能。||這個符號代表OR運算子(operator),您可在第六章中學習它的用法。f-指令用來檢測第一與第二個比較式是否其中之一爲"真"?若有其中之一爲"真",則整個if-指令即爲"真",如此便會執行其後的指令。換句話說,若您沒有輸入任何字串或您輸入的字串中沒有包含'@',均會被視爲"不合法"輸入。您知到有幾種方法可用來送出form的內容嗎?最簡單的方法就是利用e-mail來送出form的內容。我下面介紹的方法就是屬於這一種。若您不想利用e-mail來送出form的內容且想讓server能自動處理form的輸入值,此時此刻只有CGI能做得到。譬如您想做一個類似Yahoo可以讓使用者迅速得到結果的搜尋引擎(search engine),您就必須使用CGI。如此一來使用者纔不需等待系統管理者處理form的輸入值,而可由server自動處理並迅速將處理結果報告給使用者。目前JavaScript無法達到此種功能。即使您想製做一個"訪客簽名簿"(guestbook),也不可能利用 
JavaScript來叫server自動將資料加入網頁中。目前只有CGI能做到如此。但您可以製做一個利用e-mail傳送使用者資料的 guestbook,只是您需以手動(manual)方式來處理使用者所傳來的資料。若您一天不是收到很多使用者送來的資料的話,這也未嘗不可。以下語法只使用到普通的HTML語法,並不需用到JavaScript只有當您想在資料送出前做一些確認工作的話,才需用到 JavaScript。雖然目前有些瀏覽器無法使用mailto-這項指令,我相信較新版的瀏覽器都會支援這個指令。
<FORM METHOD=POST ACTION="mailto:[email protected]">
<H3>您 喜 歡 我 的 網 頁 嗎 ?</H3>
<INPUT NAME="choice" TYPE="RADIO" VALUE="1">一 點 也 不 喜 歡。<BR>
<INPUT NAME="choice" TYPE="RADIO" VALUE="2" CHECKED>簡 直 浪 費 我 的 時 間。<BR>
<INPUT NAME="choice" TYPE="RADIO" VALUE="3">這 簡 直 是 Net 上 最 爛 的 站 臺。<BR>
<INPUT NAME="submit" TYPE="SUBMIT" VALUE="Send">
</FORM>
上述語法可藉由e-mail收到使用者對您網頁的觀感。唯一的困擾是您可能會收到內容類似密語(cryptic)mail。mail內容的空格(space)有時會以'+'代替,有時會以'%20'代替。看+起+來+ 就+像+這+樣。我相信網路上應有某種程式可將收到的mail轉換成"可讀"的語句。另外有一種不錯的應用可使您的表單輸入更具"親和性"(user-friendly)。您可以指定一開始先"定焦"(focus)於哪個元件(element,簡單的說就是輸入項)。或是您可讓瀏覽器"定焦"於使用者輸入錯誤的表單。換句話說,瀏覽器將會把mouse的遊標放在您"定焦"的元件上,如此一來使用者便不需在輸入字串之前按一下mouse。請看這項功能的原始碼:
function setfocus() {
document.first.text1.focus();
return;
}
這項語法是將"定焦"放在第一個text-元件上(以本章爲例,就是在"請輸入您的大名"的空格中有遊標在閃爍)。您必需在語法中指定您想"定焦"的表單名字(以本章爲例,就是first)和元件的名字(以本章爲例,就是text1)。若您在一開始載入網頁時就想"定焦"於某個元件上,只要在<body>-tag中利用onLoad-即可:<body nLoad="setfocus()">
關於JavaScript的演變
    雖然Netscape Navigator 2.0已推出正式版,但JavaScript仍在持續開發中。因爲此描述語法(scriptinglanguage)仍相當新,在可預見的未來仍會作許多改變。但此時此刻我們已可以利用它許多功能來豐富自己的網頁。下面我舉一個親身遭遇的經驗,來說明JavaScript仍不斷在改變:我曾經在網頁中加入了lastmodified這項語法,這語法在Netscape 2.0 beta 2可正常執行但在較新版的流覽器中,這項語法卻改成了lastModified。可能您會認爲這二者之間沒不同,流覽器應不會受任何影響。錯了!流覽器會將它們視爲不同的東西。如此可見JavaScript仍是相當的"因大小寫而異"(case sensitive),所以對某些特例您必需把它分辨清楚。在Netscape 件中所提到的衆多功能(function),有些根本還不能使用,有些卻含有令人討厭的錯誤(bug)。其中某些錯誤還會選擇性的隻影響某些特定的使用者,例如date這項功能在Mac的機器上無法正確執行。這種種問題,您可在FAQ(frequently asked questions)找到。很抱歉我無法得知將來JavaScript還會做些什麼改變,也無法得知這些改變將會對您已完成的語法發生多大影響。但在這瞬息萬變的網路世界中,我不願等到JavaScript正式定稿後纔去用它。我相信您也不願意....若您對我文件中的範例有任何疑問,請告訴我。我也將繼續充實這份文件請您不定時上線查看。
Java和JavaScript是完全不同的
    我先前已提過此點,不過我願意在此重覆強調一次:Java和JavaScript是完全不同的!它們之間有許多相異之處。許多網友沒有釐清此點觀念,誤將Java方面的問題貼在BBS的JavaScript版(如 comp.lang.javascript ),而將JavaScript方面的問題貼在Java版(如comp.lang.java),這完全是錯誤的。因爲Java是一種程式語言(programming language),而JavaScript是一種描述語法( scripting language ),所以它們所使用的技術差異甚大。這兩種語言是針對不同的目的所開發的,不可混爲一談。我必需承認由於此二者的名字太過相似,導致許多人誤以爲它們是相同的東西。因此,當您要問某人有關Java或JavaScript方面的問題時,請先確定您要問的是哪一種?

***************************************************************************************************************

建立JScript腳本

***************************************************************************************************************
當建立多行的腳本時,你必須在每一句的末尾用分號結束,它表明了一句的結束及另一句的開始。下面是個例子:
<%
myvar=“Hello World!”;
myvar2=“How are you?”;
myvar3=myvar+myvar2;
%>
<%=myvar3%>
注意
實際上當使用Microsoft的JScript時,你可以忽略分號。這樣做不會產生錯誤。JScript通過檢測一個新的行來判斷是否一句結 
束了。然而,對Java Script來說,不加分號是不允許的。因此,你應當養成添加分號的習慣。
還應該注意JScript是一種區分大小寫的語言。當使用變量、函數、對象及方法時,你必須用正確的大小寫字符來識別它們。例 
如,下面的腳本將導致一個錯誤:
<%
myvar=“Hello World!”;
%>
<%=MyVar%>
當執行這個腳本時,將會產生“MyVar”未定義的錯誤。腳本的這個錯誤是由於MyVar與變量myvar不是一個變量。因爲MyVar沒 
有設定一個值,因此腳本產生了一個錯誤。
爲JScript腳本添加註釋
爲你的代碼添加註釋是明智的。隨着時間的推移,代碼會變得越來越難懂。當你回過頭來重寫或修改幾個月前編寫的腳本時, 
你將會慶幸你的先見之明。
有兩種方法爲你的腳本添加註釋,你可以用專用符號//來添加一行註釋,任何跟在這個字符之後的一行文本都將被忽略。這種 
類型的註釋對於解釋代碼中某一特定行的功能是非常有用的。
<%
myvar=“Hello World!” //This is an assignment to a variable
%>
當你需要加入多行註釋時,你可以將你的註釋放在符號對/* 和 */之中。這種類型的註釋對於解釋一段代碼甚至整個腳本的功 
能是非常有用的。如下面的例子:
<%
/* This script prints Hello World! 500 times.
It was initially created on July 5, 1997.
It was last revised on August 28, 1997.
*/
for (myvar=0; myvar<500; myvar++) %>
<B> Hello World! </B>
註釋的另一個用處是臨時取消某一段腳本的作用。要取消一句或更多JScript,只需將它們當作註釋對待。當你在調試錯誤時這 
個方法是非常有用的。
對象、方法和屬性
與VBScript相比,JScript是非常面向對象的。用VBScript編寫的腳本大部分是用函數來完成任務的,而用JScript編寫的腳本大部分是用對象及它們的方法和屬性來工作的。這兩種語言的差別可以通過怎樣用各自的語言來顯示當前日期和時間這一問題來說明。
用VBScript來顯示當前日期和時間,你可以調用函數NOW,象下面這樣:
<HTML>
<HEAD>
<TITLE> VBScript Date </TITLE>
</HEAD>
<BODY>
The date and time is: <%=NOW%>
</BODY>
</HTML>
另一方面,用JScript來顯示當前日期和時間,你需要首先建立一個日期對象,象下面這樣:
<%@ LANGUAGE=JScript %>
<HTML>
<HEAD>
<TITLE> VBScript Date </TITLE>
</HEAD>
<BODY>
<%mydate=new Date(); %>
The date and time is: <%=mydate%>
</BODY>
</HTML>
在此例中,表達式mydate = new Date()創建了一個新的名爲mydate的日期對象,它含有當前的日期和時間,這個對象必須在顯示當前日期前建立。使用VBScript顯示日期和時間,你只用簡單地調用一個函數,而用JScript來顯示日期和時間,你必須先建立一個新對象,這就是爲什麼JScript被稱爲面嚮對象語言的原因。對象究竟是什麼?對象是包含方法和屬性的一種東西,對象的方法是可對對象進行操作的東西,而對象的屬性是一些特定的值(或是其它對象)。舉一個日常用的例子,一本書就有它的方法和屬性,例如,你可以對一本名爲Huckleberry Finn的書採取行動,你可以讀它,給它印上花或者如果你覺得它特別糟糕你也可以燒掉它,這些都是與這本書相關的方法。一本書也有一些屬性,例如,名爲Huckleberry Finn的書有作者和一定的頁數,這本書的這些方法和屬性決定了你以何種方法與它交流。與此相比,一個JScript對象有它的方法和屬性,你可以對JScript對象採取特定的行動,你也可以指定和讀出對象的某些屬性,一個對象的方法和屬性決定了你用何種方式來處理它。現在假設你想要顯示本月當天的星期數而不是顯示當前的日期和時間,使用VBScript你可以調用另一函數DAY()將DATE函數作爲一個參數,象下面所示:
<HTML>
<HEAD>
<TITLE> VBScript Day of Month </TITLE>
</HEAD>
<BODY>
The date of the month is: <%=DAY(DATE)%>
</BODY>
</HTML>
另一方面,使用JScript必須調用Date對象的一個方法,一旦你建立了一個Date對象,你就可以使用對象的getDate()方法來 
獲得當天的星期數,下面是個例子:
<%@ LANGUAGE=JScript %>
<HTML>
<HEAD>
<TITLE> VBScript Date </TITLE>
</HEAD>
<BODY>
<%mydate=new Date(); %>
The day of the month is: <%=mydate.getDate()%>
</BODY>
</HTML>
在此例中,Date對象的getDate()方法通過在Date對象mydate後附加方法名(以一個點連接)來調用,正如你所看到的,方法與函數是非常相似的,但是方法是與特定對象相關聯的函數。申明變量當使用JScript時,你不需要在賦值前申明一個變量。例如,下面的腳本是正確的:
<%
myvar=“Hello World!”;
%>
<%=myvar%>
在此例中,變量myvar被賦了一個值,並且這個值被顯示在瀏覽器窗口上,文本Hello World!顯示出來。
但是下面的腳本是錯誤的:
<%
myvar2=“Hello World!”+myvar;
%>
<%=myvar2%>
這個腳本的問題在於變量myvar在賦值之前就被使用了,與VBScript不同,JScript變量必須在任何一個表達式、方法或函數中使用前先賦值。如果你願意,你也可以在賦值前先申明一個變量,你可以使用var表達式來實現這一目的,象下面所示:
<%
var myvar
myvar=“Hello World!”;
%>
<%=myvar%>
在這個腳本中,變量myvar在第一行中被申明,這一步不是必需的。因爲這個變量會在緊接着的下一語句中被申明,但是,你可以通過在腳本的頭部申明所有用到的變量來使你的腳本可讀性強及更好地跟蹤變量。你可以用var語句來同時申明和賦值多個變量,下面語言中申明的所有變量都是有效的。
<%
var myvar1,myvar2;
var myvar3=“Hello There!”;
var myvar4=“How are you?”,myvar5,myvar6=“I am fine”;
%>
注意
當申明局部變量時你必須使用ver語句,見後面一書“將腳本分爲函數(函數對象)”。

發佈了56 篇原創文章 · 獲贊 2 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章