為什麼要學指令碼語言呢?ASP和指令碼語言又有什麼關係呢?
首先說說ASP是貴為何物吧。ASP是Microsoft Active Server Pages的簡稱,它是一種伺服器端指令碼環境,可用來建立互動式 Web 頁並建立強大的 Web 應用程式。可以表明ASP是一種基於伺服器端的指令碼環境,那就明白ASP為什麼需要IIS支援了,因為IIS即為常用的一類web伺服器;那也就明白為什麼要學指令碼語言了,因為ASP提供的是一種指令碼環境。
再次需要說明的是,ASP只是一種環境,而非一種語言。如果真要形象化地說是ASP是網路程式設計語言的話,那也是屬於一個html+指令碼+asp提供的內建對象及組件的功能強大的混合語言。
所以,學點指令碼非常重要!其實無論是學指令碼語言,還是其它語言,我認為首先需要瞭解的是該語言涵蓋的各類特性,包括:資料類型、事件、方法、對象、屬性、文法等當然這都是些空談,正如在大學課堂上的某電腦語言課一樣,搞純研究性的就是覺得有些索而無味。還是實用些的好,能解決問題的程式才是好程式(印證能逮到老鼠的貓就是好貓的經典聖語,呵呵)
當然,語言這東西還是要你去好好鑽研的,比如你寫求絕對值的程式,其實一個abs()函數就搞定了。再比如你會vb指令碼,但把同樣程式替換成 java指令碼就會出錯,它們的資料類型不同,語句文法也不一樣啊。正如說中文和外文一樣,要會發音標(資料類型),會如何發音(方法),如何說成一句話(文法)……呵呵,有點讓你難受吧。行!直接了當。你以後需要注意的是語言的函數、文法。當然也不是讓你全看,按照教程中的遇到一個掌握一個。教程學完,差不多也結束了。呵呵,你要相信我。
目前有兩種主要的指令碼語言:VbScript和JavaScript。因為VbScript作為IIS預設的伺服器指令碼,所以我們所談所學的基本是圍繞VbScript為指令碼的ASP的,當然也不排除有的時候使用javascript.
舉一個很簡單的例子:
<script language="vbscript">
<!--
sub button1_onclick
msgbox (" 歡迎使用vbscript! " )
end sub
-->
</script>
<script language="javascript">
<!--
function b213()
{
alert("歡迎使用javascript!")
}
-->
</script>
<form>
<input type="button" name="button1" value="vbs"><br>
<input type="button" name="button2" value="js" >
</form>
vbscript中的Sub 就是一個事件程序。過程名包含兩部分:一部分為按鈕名,即 Button1(從 < INPUT > 標記中的 NAME 屬性擷取);另一部分為事件名,即 OnClick。兩部分由底線 (_) 串連。單擊按鈕時,Internet Explorer 尋找並運行相應的事件程序,即 Button1_OnClick,而MsgBox 就是一個函數,對於它更具體的參數,你就好好看下了。
一時來勁,可能大家都看到網上有種狂噁心的對話方塊組,原理是什麼呢?請看:
<script language="vbscript">
msgbox"你知道你會點確定的。。。。。。。"
msgbox"不點也要點。。。。。。。。"
msgbox"沒辦法是吧。。。。。。。。。。?"
msgbox"要不網頁打不開啊。。。。。。"
msgbox"這招損人吧。。。。。。。。。"
msgbox"真想揍揍站長。。。。。。。。。"
</script>
其實站長用這些玩弄別人的時候,先玩弄了自己:因為這都是他想出來的啊:)
呵呵,我沒有損大家的意思,只是為了學習。
在來個開頁和退頁彈出對話方塊的原理吧
<script language="vbscript">
<!--
sub window_onload()
msgbox"welcome you!"
end sub
sub window_onunload()
msgbox"see you late!"
end sub
-->
</script>
開頁顯示“welcome you!”,關頁顯示“see you late!”
以上只是一個顯示對話方塊msgbox,當然還有書寫對話方塊inputbox也順便看下吧。
<script language="vbscript">
<!--
dim strname
strname=inputbox("enter your name please:","enter your name","cnbruce")
document.write(strname&",welcome you!<p>")
-->
</script>
有關inputbox的想關參數也去看看吧。
再來看看幾個實用的函數:
len():返回字串長度或者變數的位元組長度
lef():截取一個字串的前部分內容
right():截取一個字串的後部分內容
<script language=vbs>
text="1234567890abcdefgh"
i=10
lentext=len(text)
lefttext=left(text,i)
righttext=right(text,i)
alert ("文本長度是:"&lentext)
alert ("文本左取"&i&" 得的是:"&lefttext)
alert ("文本右取"&i&" 得的是:"&righttext)
</script>
根據這幾個,經常看到的長文章後面加“......”的情況就是如下:
<script language=vbs>
text="123 4567 8fds90 abcde fghxcfv"
i=10
if len(text)>i then '如果文本長度大於給定的值
text=left(text,i) '則提取前段的i位的字串
alert (text&"...")
else
alert (text)
end if
</script>
還有個比較重要的函數replace()
在字串中尋找,替代指定的字串
replace(strtobesearched,strsearchfor,strreplacewith)
strtobesearched是字串; strsearchfor是被尋找的子字串;strreplacewith 是用來替代的子字串。
下面的一個就是很有用的文字轉換程式
<script language=vbs>
text="你好,歡迎"
text=replace(text,"你好","nihao")
text=replace(text,"迎","Ying")
alert (text)
</script>
經常在發送EMAIL時,添加多個地址,中間採用“;”號進行分隔,那具體怎麼分解接受過來的多個EMAIL地址呢?採用Split函數:Split 函數從字串中返回數組。
<script language=vbs>
cnbruce=chinahtml@163.com;chinahtml@gmail.com;chinahtml@hotmail.com
MyArray = Split(webjx, ";")
a=MyArray(0)
b=MyArray(1)
c=MyArray(2)
alert(a)
alert(b)
alert(c)
</script>
這些都是比較現實較好玩的些,玩中學習也不錯:)但畢竟我們是要編程的,說到編寫程式,我知道程式結構可以分:
1,順序結構:就是最普通的,從上往下,從左往右執行的程式
2,選擇結構:給你兩個條件,要不這樣(if ... then),要不那樣(else),任君選擇:)
3,迴圈結構:給你一個最大發揮的空間,在不超出這個範圍內進行活動(迴圈),否則自動結束(跳出迴圈)。
再複雜的程式也無非是由這三種結構綜合嵌套運用過來的,你說是吧。
順序結構沒多少要說,因為程式執行基本都是這方向。
來看看選擇結構,當然選擇結構也可以嵌套。
<body>
hello,
<script language="vbscript">
<!--
dim thishour
thishour=hour(time)
if thishour<=12 then
document.bgcolor="red"
document.fgcolor="black"
document.write("上午好!")
else
if thishour<=18 then
document.bgcolor="blue"
document.fgcolor="white"
document.write("下午好!")
else
document.bgcolor="green"
document.fgcolor="yellow"
document.write("晚上好!")
end if
end if
-->
</script>
本頁的作用是根據不同時間顯示不同顏色和歡迎資訊。
</body>
以上程式很簡單吧,只要能認識英文就會懂程式(我是這麼理解的:)
先把現在的小時提交出來:hour(time);
然後和12比較判斷,如果<=12,肯定是上午了,否則就是下午和晚上;
否則裡面繼續條件判斷,如果時間再<=18的話,那肯定就是下午了;
最後,不用說,瞎子猜猜也知道是晚上了:)
有關上一程式中的document.bgcolor就是文檔的背景色,document.fgcolor就是文檔的前景色彩(文字色),下一程式是動態改變背景顏色的。
<script language="vbscript">
<!--
sub setbgcolor(bcolor)
document.bgcolor=bcolor
end sub
-->
</script>
<form>
<input type="radio" name="color" onclick=setbgcolor("red")>red<br>
<input type="radio" name="color" onclick=setbgcolor("green")>green<br>
<input type="radio" name="color" onclick=setbgcolor("blue")>blue<br>
<input type="radio" name="color" onclick=setbgcolor("yellow")>yellow<br>
<input type="radio" name="color" onclick=setbgcolor("gray")>gray<br>
</form>
有關條件選擇結構的嵌套再show出一個表單檢測的程式
<html><head><title>abc</title>
<script language="vbscript">
<!--
sub btnsubmit_onclick
if form1.name.value<>"" then
if form1.addr.value<>"" then
if form1.email.value<>"" then
if instr(form1.email.value,"@")<>0 and instr(form1.email.value,".")<>0 then
form1.submit
else
alert"email error!"
end if
else
alert "enter your email!"
form1.elements("email").focus
end if
else
alert "enter your address!"
form1.elements("addr").focus
end if
else
msgbox "enter your name please!"
form1.elements("name").focus
end if
end sub
-->
</script>
</head>
<body>
<form name="form1" method=post action="bug.html">
your name:<input type="text" name="name"><br>
your addr:<input type="text" name="addr"><br>
your email:<input type="text" name="email"><br>
<input type="button" name="btnsubmit" value="submit">
</form>
</body>
</html>
程式是給出來了,但看起來比較難懂,有時程式執行時間也比較重要,所以得精簡程式碼。
正所謂:寫程式容易,寫經典程式難啊,那上面的程式還可以換種思維方式。改用javascript(註:學的是編程思想,不要太過計較指令碼類型)
<html>
<head>
<title>abc</title>
<script language="javascript">
<!--
function form1_onsubmit()
{
if (document.form1.name.value=="")
{
alert("請設定您的登陸名。")
document.form1.name.focus()
return false
}
else if(document.form1.addr.value=="")
{
alert("請填寫您的地址。")
document.form1.addr.focus()
return false
}
else if(document.form1.email.value=="")
{
alert("請填寫您的E-Mail地址。")
document.form1.email.focus()
return false
}
}
-->
</script>
</head>
<body>
<form name="form1" >
your name:<input type="text" name="name"><br>
your addr:<input type="text" name="addr"><br>
your email:<input type="text" name="email"><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
最後來看下迴圈結構吧:1到500可不是一個一個寫出來的。
<script language=vbs>
for i= 1 to 500
document.write(i&"<br>")
next
</script>
當然迴圈不只可以用for,還可以用do while...loop等
反正程式這東西是代替我們少做了許多重複單一無聊的事——只要你合理利用程式。
應該有些成就吧,學語言,學編程就是學文法語義,學編程架構思想。
當然這要你有紮實的本語言的基礎,基礎是什嗎?你知道哪些函數嗎?你知道怎麼用程式怎麼判斷偶數嗎(包含了運算)?你知道如何進行表單檢測嗎?你知道哪三種程式架構嗎?
呵呵,把以上的程式吃透,最好再多看看指令碼參考手冊,跟我就可以開始ASP的上路了。
補:
Function過程與Sub過程類似,但是Function過程可以傳回值。
Function過程也可以使用由調用過程傳遞的常數、變數或運算式作為參數。如果Function過程無任何參數,則Function語句必須包含括弧()。
Function過程通過函數名返回一個值,這個值是在過程的語句中賦給函數名。Function傳回值的資料類型總是Variant。