VBScript入門 概述 我先來說一下本文的特點:主要是面向初學(xué)者,我所介紹的也沒有將VBs cript全包括,只是其中一些比較簡單又比較常用的內(nèi)容。 HTML簡介 HTML是一門非常容易的語言,因此當(dāng)你看到那么多漂亮的網(wǎng)頁的時候,千萬不要以為它是多么的難學(xué)。它沒有任何分支及循環(huán)語句,它所做的只是告訴瀏覽器要怎樣顯示它所指定的內(nèi)容?,F(xiàn)在有很多網(wǎng)頁制作工具,如Frontpage等,它們大多可以完成你的多數(shù)的工作,甚至于即使你完成不懂HTML,也可以制作出相當(dāng)水準(zhǔn)的網(wǎng)頁。就象有人所說的那樣,“ForntPage”是用來制作網(wǎng)頁的,而學(xué)習(xí)HTML語言則是為了更好地修改網(wǎng)頁的。 在HTML語言中有一個概念是“標(biāo)志詞”,請先看一個最最簡單的例子: <HTML> <HEAD> <TITLE>于愛武的個人主頁</TITLE> </HEAD> <BODY> </BODY> </HTML> 在這個例子中,如<HTML>、<HEAD>等這些被“<”、“>”括在中間的稱為標(biāo)志詞。還有一點就是標(biāo)志詞一般(個別的除外)都是成對出現(xiàn)的,如<HEAD>和</HEAD>,它的作用是強調(diào)一個段落的開始和結(jié)束,即強調(diào)的是整體概念。下面我們來分析一下上面的例子: <HTML>和</HTML>總是位于程序的開始和結(jié)尾處,用來表示程序的開始和結(jié)束,是必不可少的一部分; <HEAD>和</HEAD>表示程序的頭部,如標(biāo)題等一些信息便要在頭部中進(jìn)行設(shè)置; <TITLE>和</TITLE>用來設(shè)置程序的標(biāo)題,你所設(shè)置的標(biāo)題將會出現(xiàn)在瀏覽器的標(biāo)題欄中。例如我們?nèi)绻O(shè)置了標(biāo)題為“于愛武的個人主頁”,那么在瀏覽器的標(biāo)題欄中就會顯示“于愛武的個人主頁-Microsoft Internet Explorer”(以后如果不是特殊說明,均以IE4為瀏覽器進(jìn)行試驗)。 <BODY>和</BODY>是程序的主體部分,各種圖形,文字的輸入均可在此進(jìn)行。 如果你使用了FrontPage,那么上述的工作將全部由FrontPage 來替你完成,而不用你寫一句代碼。 要在程序中書寫文字,可以用<P>和</P>標(biāo)志詞。我們?nèi)绻谏侠?lt;HEAD>和</HEAD>加入<P>歡迎光臨于愛武的個人主頁</P>,那么當(dāng)用瀏覽器打開程序時,就會在窗體上出現(xiàn)“歡迎光臨于愛武的個人主頁”字樣。 HTML的強大的生命力還在于它的“超連接”功能。我們經(jīng)常可以在網(wǎng)上見到,當(dāng)鼠標(biāo)移至某個圖形或某串文字時,鼠標(biāo)圖形會變成一只小手,點下鼠標(biāo)時,就會打開相應(yīng)的連接,這就是超連接。它的實現(xiàn)也不難,看看下例就明白了。 <a href="http://yuaiwu.">于愛武的個人主頁</a>,其中<a>和</a>可以理解為超連接的標(biāo)志詞,在a后面緊跟的"href=…"表示超連接的地址,而“于愛武的個人主頁”表示在窗體上將顯示的內(nèi)容。執(zhí)行本例后,將在窗體上顯示“于愛武的個人主頁”,點擊后將連接到http://yuaiwu.。 再看下例:<a href="mailto:yuaiwu@">寫信給我</a>,其中的mailto表示此超連接為指向一個信箱,即點后可以給yuaiwu@發(fā)信。 如果我們要制作文件下載功能,更簡單了,只要把超連接指到某一文件就行了,就如下例所示: <a href = "sample.zip">下載</a> 這樣,當(dāng)我們點擊“下載”時,就會把“sample.zip”下載了。 還有最重要的一點就是圖像問題。怎么樣才能給一個頁面加上一個漂亮的背景圖片呢?這就要在<BODY>和</BODY>中指定,如<body background="images/wb02102_.gif">,說明了在當(dāng)前目錄的images的子目錄下的wb02102_.gif文件將作為該網(wǎng)頁的背景圖片。使用背景圖片應(yīng)該注意的就是背景的選擇應(yīng)與前臺內(nèi)容相協(xié)調(diào),不應(yīng)有喧賓奪主的感覺,也不應(yīng)太刺眼,給人反感,還有就是圖片尺寸不應(yīng)太大,如果讓人花上個把小時去等待一個背景,那會讓人討厭的。 如果要在窗體上放置一個圖片,那么可以直接寫成“img src=" wb02102_.gif"”就可以了。 VBs cript語言 <HTML> <HEAD> <TITLE>于愛武的個人主頁</TITLE> </HEAD> <BODY> <s cript LANGUAGE="VBs cript"> <!-- MSGBOX "歡迎來到于愛武的個人主頁" --> </s cript> </BODY> </HTML> <s cript LANGUAGE="VBs cript">代表VBs cript腳本語言的開始,而</s cript>則是表示VBs cript的結(jié)束。在這其中放置的代碼,即為VBs cript語言。還有一點就是在<s cript LANGUAGE="VBs cript">的下面有一行<!,而在</s cript>的上面有一行“-->”,這兩個符號相對應(yīng),是注釋的意思。之所以要將源代碼都注釋掉,是因為如果有某些瀏覽器不支持VBs cript的話,可以僅僅把它當(dāng)作注釋,而不會對程序造成什么影響。當(dāng)然,像IE這樣支持VBs cript的瀏覽器則會自動執(zhí)行它的,而不必?fù)?dān)心它是注釋內(nèi)容?!癕SGBOX”是一個消息框,它后面所跟的內(nèi)容即為顯示的內(nèi)容。 說到這里,便應(yīng)該再來說說FrontPage了。新版的FrontPage98提供了相當(dāng)多的功能,它不僅可以制作網(wǎng)頁,還可以輕松地插入VBs cript腳本語言,在后面我們會經(jīng)常用到它。其實VBs cript不能算是一門真正的語言,到現(xiàn)在為止,VBs cript還沒有一個專門的編輯器和調(diào)試器,這和VB是沒法相比的,但是因為VBs cript是VB的一個子集,因此VBs cript的內(nèi)容在VB下大多都可以通過,所以我們?nèi)绻帉懘蠖蔚腣Bs cript程序,可以在VB下進(jìn)行編寫、調(diào)試,等通過后再做稍稍的修正,就可以拿到VBs cript下使用了。 即然要完整地學(xué)習(xí)這門VBs cript“語言”,就要像介紹其它語言一樣,從它的變量開始。 VBs cript的變量 Dim a,b Dim a,b,c A=10 B=20 C=a+bb Msgbox c 有一個辦法可以使你強制定義變量,就是在程序的首部加上一句“Option Explicit”,這樣,如果象上例那樣出現(xiàn)了bb之流沒定義過的變量,程序就會出錯,等待你去修改,而不是僅僅給出一個錯誤的結(jié)果。 上面我提到,“從某種意義上來講,VBs cript只有一種變量類型”,也就是說,在另一意義上來講,VBs cript還可有多種變量類型,不過要使用強制轉(zhuǎn)換手段。經(jīng)過相應(yīng)的轉(zhuǎn)換函數(shù)轉(zhuǎn)換后,我們可以使用整數(shù)、長整數(shù)、字符串、單精度、雙精度等類型。 I.CInt()、CLng()、CSng()、CDbl()四個函數(shù)是用來把一個變量轉(zhuǎn)換成整型、長整型、單精度型和雙精度型。比如:Cint("10")=10, CLng("65537")=65537 ,CDbl("3.5")=3.5。這四種類型是有區(qū)別的,首先CInt()、CLng()是把變量轉(zhuǎn)換成整數(shù),其中CInt()是一般的整數(shù),它占兩個字節(jié),而CLng()是把變量轉(zhuǎn)換成一個長整數(shù),它占用四個字節(jié)。用整數(shù)可以表示的范圍是-32768~32767,而長整型的范圍可增加到-2147483648~2147483647,怎么樣,好長吧,因此,如果轉(zhuǎn)換的結(jié)果如果不在整型可以表達(dá)的范圍之內(nèi)的時候,就要考慮用長整型。CSng()、CDbl()都是小數(shù)轉(zhuǎn)換函數(shù),它們可以把一個變量轉(zhuǎn)換成一個小數(shù),差別僅在于精度不同,如果對精度要求不高,可以采用單精度型,如果對精度要求很高,則就要采用雙精度型。不過,它們兩種都能表示出很大范圍的數(shù),如果沒有特殊要求,單精度數(shù)據(jù)已能滿足我們的需要了。請看下例: option explicit Dim a,b,c A="10" B="20" C=clng(a)+clng(b) Msgbox c 最后輸出結(jié)果為30,如果我們將C=clng(a)+clng(b)一句改為C=a+b,那么最后結(jié)果應(yīng)該是1020,因為C的作用是將兩個字符串加在了一起,即為1020;如果改寫為C=clng(a+b)的話,最后結(jié)果也是1020,因為它是先把字符串進(jìn)行相加,然后再把所得到的串轉(zhuǎn)換成相應(yīng)的數(shù)字。 II.CStr()是將一個變量轉(zhuǎn)換成一個字符串,如果上例改寫成如下形式: option explicit Dim a,b,c A=10 B=20 C=CStr(a)+CStr(b) Msgbox c
則最后的結(jié)果等于1020,而不是30,為什么呢,因為它是先將數(shù)值轉(zhuǎn)換成字符串,然后再進(jìn)行相加的。 III.Cbool()是將一個表達(dá)式的值轉(zhuǎn)換成邏輯值“真”或“假”。轉(zhuǎn)換的規(guī)則是如果表達(dá)式為0則結(jié)果為假,如果為非零則結(jié)果為真,因此對于字符串來說,它的結(jié)果永遠(yuǎn)為真。反過來,如果把邏輯真看成數(shù)值的話,那么它等于-1,邏輯假為0??聪铝斜磉_(dá)式: A=10 B=10 C=CBool(a) 結(jié)果為True C=Cbool(CStr(a)) 結(jié)果為true C=Cbool(a)+Cbool(b) 結(jié)果為-2 IV.Cdate()函數(shù)可以將一個變量轉(zhuǎn)換成一個日期型變量,如:Cdate("1999-2-25")便是一個日期型結(jié)果。轉(zhuǎn)換的意義在于我們可以正確地判斷兩個日期的先后順序,對于兩個字符串“1999-2-2”和“1999-2-3”來說,是“1999-2-2”<“1999-2-3”,而當(dāng)轉(zhuǎn)換后變成了Cdate(“1999-2-2”)>Cdate(“1999-2-3”),道理很明顯,2號是在3號的前面。 V.以上介紹了一些轉(zhuǎn)換函數(shù),也提到了VBs cript中的數(shù)據(jù)類型,其中最重要的當(dāng)屬字符串型了。HTML的大部分任務(wù)是顯示指定內(nèi)容的字符串,由于VBs cript的加入,更使得字符串處理功能加倍“強壯”。通過VBs cript函數(shù),我們可以對字符串進(jìn)行載取、相加等操作。 Left、Right是對字符串進(jìn)行左截或右截。請看示例: A="123456789" B=left(a,3) Msgbox b C=right(a,3) Msgbox c 如果我們要載取一個字符串中間的幾個字符,可以用Mid函數(shù),如C=mid(a,4,3)得出的結(jié)果是c="456"。 求一個字符串的長度用的是Len函數(shù),比如說Len("1234567")=7。 VI.?dāng)?shù)組: VBs cript也象其它編程語言一樣,提供了數(shù)組操作。定義一個數(shù)組的格式如下: Dim a(10) For I=0 to 10 a(I)=I Next 11個元素的值分別是0,1,… ,10。如果想要定義其它類型的數(shù)組,按照上面的格式做稍微的修改就可以了。 2.上面介紹的是VBs cript的變量,我們必須結(jié)合其它內(nèi)容才能充分學(xué)好它。下面我們來說一下VBs cript中又一個要點:分支與循環(huán)。 I.分支指的是If … Then… Else…End if結(jié)構(gòu)的條件判斷語句。 如下面的程序: a =inputbox("你今年多大了") if Cint(a)<20 then msgbox "你是一個小同志" else msgbox "你不是一個小同志" end if 上例中用到了一個函數(shù)InputBox(),它的作用是接收從鍵盤上輸入的字符串,比如上例我如果輸入20,則a="20"。此例的思路是由用戶輸入一個年齡值,然后判斷它的大小。如果它小于20,則輸出"你是一個小同志",否則輸出"你不是一個小同志"。 此例如果簡化成下面的形式: a =inputbox("你今年多大了") if Cint(a)<20 then msgbox "你是一個小同志"
end if a =inputbox("你今年多大了") if Cint(a)<20 then msgbox "你是一個小同志"
而將end if省略。但是由于這種寫法不便于閱讀,因此我希望大家能夠按照要求寫好每一步。 再對上例進(jìn)行一下改造: a =inputbox("你今年多大了") if Cint(a)<10 then msgbox "你是一個小孩子" elseif cint(a)<20 then msgbox "你是一個小同志" elseif cint(a)<40 then msgbox "你在青年" elseif cint(a)<50 then msgbox "你在中年" else msgbox "你已上了年紀(jì)" end if
還有一類分支結(jié)構(gòu)是Select … Case… End Select。舉個例子來說明一下:我們要根據(jù)輸入的數(shù)字來確定現(xiàn)在是幾月份。 Dim a,mon a =inputbox("現(xiàn)在是幾月份?") select case cint(a) case 1 mon="一" case 2 mon="二" case 3 mon="三" case 4 mon="四" case 5 mon="五" case 6 mon="六" case 7 mon="七" case 8 mon="八" case 9 mon="九" case 10 mon="十" case 11 mon="十一" case 12 mon="十二" end select msgbox "現(xiàn)在是" + mon +"月份" Dim a,quarter a =inputbox("現(xiàn)在是幾月份?") select case cint(a) case 1,2,3 quarter="二" case 7,8,9 quarter="四" end select msgbox "現(xiàn)在是第" + quarter +"季度" If分支和Select分支都是十分有用的,我們可以根據(jù)不同的需要來選用不同的方法,這樣才能充分發(fā)揮VBs cript 的作用。 II.For … Next循環(huán): VBs cript的循環(huán)主要有For … Next循環(huán)和Do While … Loop循環(huán)兩種,我們先來講一下For … Next循環(huán)。請看下例: dim i,sum for i=1 to 100 sum=sum+i next msgbox sum 此例是計算從1到100這100個數(shù)的和,結(jié)果是5050,我們從小就在珠算上玩這個游戲。如果要計算從1到1000的和,很簡單,只要把上例中的100改為1000就行了。請再看一個例子: dim i,sum for i=1 to 100 step 2 sum=sum+i next msgbox sum
這個例子是用來計算從1到100之間的奇數(shù)的和。如果要計算從1到100間偶數(shù)的和,只要把循環(huán)條件改成for i=2 to 100 step 2就可以了。 Step為步長之意,即規(guī)定循環(huán)變量每變化一次時的增量值,如果不寫,則默認(rèn)為1。我們甚至可以把Step的值定為負(fù)值,如下例,依然可以實現(xiàn)1至100間偶數(shù)的求和工作: dim i,sum for i=100 to 1 step -2 sum=sum+i next msgbox sum
III.Do While … Loop循環(huán): For循環(huán)是規(guī)定了循環(huán)的次數(shù)進(jìn)行循環(huán),而Do While … Loop循環(huán)則是當(dāng)條件滿足時進(jìn)行循環(huán),否則便跳出循環(huán),不象For循環(huán)那樣嚴(yán)格地限定循環(huán)次數(shù)。 還以計算1到100這100個數(shù)的和為例,改用Do While … Loop循環(huán)表示為: Dim I,sum I=0 Do while I<100 I=I+1 Sum=sum+I
Loop Do while I<100 Sum=sum+I I=I+1 Loop 兩種循環(huán)方式同樣是各有所長的,我們也應(yīng)該根據(jù)實際情況來決定用哪種方式,千萬不能生搬硬套。 3.VBs cript的自定義函數(shù): 自定義函數(shù)包括子程序和函數(shù)兩部分,它們兩者的區(qū)別在于函數(shù)有返回值,而子程序沒有。從本質(zhì)上來說,兩者沒有太大的區(qū)別。 我們先來舉一個例子來說明一下子程序: <s cript language="vbs cript"> <!-- option explicit dim a sub age() a=inputbox("請輸入你的年齡:") end sub age msgbox a --> </s cript> 函數(shù)和子程序類似,只是它能夠返回一個值。我們來編一個求兩個數(shù)中較大值的函數(shù): dim a,b,c a=10 b=20 c=max(a,b) msgbox c function max(x,y) if x<y then max=y else max=x end if end function 到此,我們介紹了VBs cript的大部分的語法內(nèi)容,這部分雖然沒有什么意思,但是它是你的其它工作的前提,如果沒有堅實的語法基礎(chǔ),其它什么工作都做不好,希望大家能夠多多地練習(xí)。 VBs cript中的對象: VB是一門面向?qū)ο蟮某绦蛘Z言,VBs cript也不例外(起碼它用到了對象的概念)。面向?qū)ο蠼o編程帶來了很多的益處,這在VBs cript中也得到了體現(xiàn)。 1.象VB一樣,我們可以在窗體上加上命令按鈕、文本框等控件(對象),如果你使用的是FrontPage,那你的工作量很小,只要按照所見即所得的風(fēng)格將控件擺放在正確的位置就可以了,如果你想用記事本等編輯器直接編輯網(wǎng)頁,那你可要費一番力氣。 在介紹其它對象之前,我先來說一個比較特殊的對象:定時器。它的作用是每隔一段時間就去執(zhí)行一件事情,如果你學(xué)習(xí)過VB,這將是非常容易理解的。定時器的屬性主要是:Enabled、Interval,Enabled表示它是否可用,而Interval是指每隔多長時間事件發(fā)生一次,它的單位是1/1000秒。 如果要加入一個定時器,最好選用FrontPage。在菜單中選擇Insert-Advanced-ActiveX Control后,就會彈出一個對話框,在下拉菜單中就可以找到Timer Object。有一點千萬不能忘記,就是要給它取一個名字,否則你是無法使用的。你還可以點擊屬性鈕對其Enabled、Interval屬性進(jìn)行設(shè)置?,F(xiàn)在我們來加入一個名字為"tmrLbl"時間間隔為200毫秒的定時器,在HTML的源代碼中將會出現(xiàn)下列代碼: <object ID="tmrLbl" WIDTH="39" HEIGHT="39" CLASSID="CLSID:59CCB4A0-727D-11CF-AC36-00AA00A47DD2"> <param name="_ExtentX" value="2064"> <param name="_ExtentY" value="2302"> <param name="Interval" value="200"> </object> 現(xiàn)在僅僅是有了一個定時器,我們還必須對它的事件進(jìn)行編碼,才能使用它。定時器有一個事件叫作"Timer"。每隔一段時間,就會把這個事件中的事情執(zhí)行一遍。我們可以對它編程如下: <s cript LANGUAGE="VBs cript"> <!-- Sub tmrLbl_Timer() end sub --> </s cript> 標(biāo)簽: 用和加入定時器同樣的方法來加入兩個標(biāo)簽(Microsoft Forms 2.0 Label),并取名為lblYu0和lblYu1,它們的字體可以設(shè)置的大一些,這樣以便于觀察,將將兩個標(biāo)簽的Caption屬性設(shè)為"Y"和"U"(設(shè)置方法同定時器控件)。然后再對定時器重新進(jìn)行編程: <s cript LANGUAGE="VBs cript"> <!-- Sub tmrLbl_Timer() lblyu0.forecolor=rgb(255*rnd,255*rnd,255*rnd) lblyu1.forecolor=rgb(255*rnd,255*rnd,255*rnd) end sub --> </s cript> RGB()是一個顏色函數(shù),它有三個參數(shù),分別表示紅、綠、藍(lán)三色的比例,0表示沒有,255表示全色。要表示紅色可寫成RGB(255,0,0),即將紅色的比例置為100%,而其它兩種顏色均沒有。那么要表示白色呢,即為RGB(255,255,255),黑色呢,讀者可以自己考慮一下。 還有一個是“Rnd”,它表示產(chǎn)生一個從0至1之間的隨機數(shù),如果用Rnd*255,就可以表示出從0到255之間的隨機數(shù)了。 因此上例可以顯示出顏色隨機變化的標(biāo)簽了。如果你有耐心,可以調(diào)試出更加漂亮的標(biāo)簽來。 3.Window 如果我們這樣寫:Window.status="于愛武的個人主頁",那么窗體的狀態(tài)條上就會顯示相就的字符串。 Window對象有兩個事件OnLoad 和OnUnLoad。加入以下代碼: <s cript language="vbs cript"> <!-- option explicit sub window_onload() msgbox "歡迎光臨" end sub sub window_onunload() msgbox "歡迎再來" end sub --> </s cript> 控件數(shù)組 <s cript LANGUAGE="VBs cript"> <!-- Dim a(9) Set a(0)=lblYu0 … (省略) Set a(9)=lblYu9 Sub tmrLbl_Timer() For I=0 to 9 A(I).forecolor=rgb(255*rnd,255*rnd,255*rnd) Next end sub --> </s cript>
<s cript language=VBs cript> </s cript> 當(dāng)然,如果不用數(shù)組,也完全可以實現(xiàn),但是要多寫很多代碼,而且不便調(diào)試。 六.總結(jié) 我在上面曾多次提到FrontPage的使用,的確,它是個不錯的東東,我們可用它輕松的插入控件,并可以實現(xiàn)VBs cript腳本語言的編寫,如果多多練習(xí),肯定會使你達(dá)到事半功倍的效果。 我們已經(jīng)把VBs cript的內(nèi)容大致的瀏覽了一遍,這些已經(jīng)可以讓你在網(wǎng)上小試身手了。當(dāng)然如果你想成為真正的高手,這點是不夠的,還要繼續(xù)“深造”才行。 本文來自: 中科軟件園(www.) 詳細(xì)出處參考:http://www./Article/html/10/58/2005/2754.html |
|