ASP編程入門進階(三):接觸指令碼程式_ASP基礎

來源:互聯網
上載者:User
有了前面的html中關於form的強化知識,是不是在想,下面就可以開始ASP之旅呢?未必。
一般系統學過ASP的編程人員都會切身體會到:在系統學習ASP的內建對象和內建群組件之前,學會指令碼語言永遠是至關重要的。
為什麼這麼說呢?為什麼要學指令碼語言呢?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" onclick="b213()"></form>vbscript中的Sub 就是一個事件程序。過程名包含兩部分:一部分為按鈕名,即 Button1(從 < INPUT > 標記中的 NAME 屬性擷取);另一部分為事件名,即 OnClick。兩部分由底線 (_) 串連。單擊按鈕時,Internet Explorer 尋找並運行相應的事件程序,即 Button1_OnClick,而MsgBox 就是一個函數,對於它更具體的參數,你就好好看下了。
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

一時來勁,可能大家都看到網上有種狂噁心的對話方塊組,原理是什麼呢?請看:

<script language="vbscript">msgbox"你知道你會點確定的。。。。。。。"msgbox"不點也要點。。。。。。。。"msgbox"沒辦法是吧。。。。。。。。。。?"msgbox"要不網頁打不開啊。。。。。。"msgbox"這招損人吧。。。。。。。。。"msgbox"真想揍揍站長。。。。。。。。。"</script>其實站長用這些玩弄別人的時候,先玩弄了自己:因為這都是他想出來的啊:)呵呵,我沒有損大家的意思,只是為了學習。
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

在來個開頁和退頁彈出對話方塊的原理吧
<script language="vbscript"><!--sub window_onload() msgbox"welcome you!"end subsub window_onunload() msgbox"see you late!"end sub--></script>開頁顯示“welcome you!”,關頁顯示“see you late!”
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

以上只是一個 顯示對話方塊msgbox,當然還有 書寫對話方塊inputbox也順便看下吧。

<script language="vbscript"><!--dim strnamestrname=inputbox("enter your name please:","enter your name","cnbruce")document.write(strname&",welcome you!<p>")--></script>有關inputbox的想關參數也去看看吧。
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

再來看看幾個實用的函數:
len():返回字串長度或者變數的位元組長度 
lef():截取一個字串的前部分內容
right():截取一個字串的後部分內容
<script language=vbs>text="1234567890abcdefgh"i=10lentext=len(text)lefttext=left(text,i)righttext=right(text,i)alert ("文本長度是:"&lentext)alert ("文本左取"&i&" 得的是:"&lefttext)alert ("文本右取"&i&" 得的是:"&righttext)</script>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

根據這幾個,經常看到的長文章後面加“......”的情況就是如下:

<script language=vbs>text="123 4567 8fds90 abcde fghxcfv"i=10if len(text)>i then '如果文本長度大於給定的值text=left(text,i) '則提取前段的i位的字串alert (text&"...")elsealert (text)end if</script>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

還有個比較重要的 函數replace()
在字串中尋找,替代指定的字串
replace(strtobesearched,strsearchfor,strreplacewith)
strtobesearched是字串; strsearchfor是被尋找的子字串;strreplacewith 是用來替代的子字串。
下面的一個就是很有用的文字轉換程式
<script language=vbs>text="媽的,我操"text=replace(text,"媽的","MD") text=replace(text,"操","CAO") alert (text)</script>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

經常在發送EMAIL時,添加多個地址,中間採用“;”號進行分隔,那具體怎麼分解接受過來的多個EMAIL地址呢?採用Split函數:Split 函數從字串中返回數組。
<script language=vbs>cnbruce="cnbruce@126.com;cnbruce@it365cn.com;root@cnbruce.com"MyArray = Split(cnbruce, ";")a=MyArray(0)b=MyArray(1)c=MyArray(2)alert(a)alert(b)alert(c)</script>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

這些都是比較現實較好玩的些,玩中學習也不錯:)但畢竟我們是要編程的,說到編寫程式,我知道程式結構可以分:
1,順序結構:就是最普通的,從上往下,從左往右執行的程式
2,選擇結構:給你兩個條件,要不這樣(if ... then),要不那樣(else),任君選擇:)
3,迴圈結構:給你一個最大發揮的空間,在不超出這個範圍內進行活動(迴圈),否則自動結束(跳出迴圈)。
再複雜的程式也無非是由這三種結構綜合嵌套運用過來的,你說是吧。

順序結構沒多少要說,因為程式執行基本都是這方向。
來看看選擇結構,當然選擇結構也可以嵌套。

<body>hello,<script language="vbscript"><!--dim thishourthishour=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>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

以上程式很簡單吧,只要能認識英文就會懂程式(我是這麼理解的:)
先把現在的小時提交出來:hour(time);
然後和12比較判斷,如果<=12,肯定是上午了,否則就是下午和晚上;
否則裡面繼續條件判斷,如果時間再<=18的話,那肯定就是下午了;
最後,不用說,瞎子猜猜也知道是晚上了:)

有關上一程式中的document.bgcolor就是文檔的背景色,document.fgcolor就是文檔的前景色彩(文字色),下一程式是動態改變背景顏色的。

<script language="vbscript"><!--sub setbgcolor(bcolor) document.bgcolor=bcolorend 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>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

有關 條件選擇結構的嵌套再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 ifend 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>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

程式是給出來了,但看起來比較難懂,有時程式執行時間也比較重要,所以得精簡程式碼。
正所謂:寫程式容易,寫經典程式難啊,那上面的程式還可以換種思維方式。改用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" onsubmit="return form1_onsubmit()">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>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]


最後來看下 迴圈結構吧:1到500可不是一個一個寫出來的。

<script language=vbs>for i= 1 to 500 document.write(i&"<br>")next</script>
[Ctrl+A 全部選擇進行拷貝 提示:可先修改部分代碼,再點擊運行]

當然迴圈不只可以用for,還可以用do while...loop等
反正程式這東西是代替我們少做了許多重複單一無聊的事——只要你合理利用程式。

應該有些成就吧,學語言,學編程就是學文法語義,學編程架構思想。
當然這要你有紮實的本語言的基礎,基礎是什嗎?你知道哪些 函數嗎?你知道怎麼用程式怎麼判斷偶數嗎(包含了 運算)?你知道如何進行表單檢測嗎?你知道哪三種程式架構嗎?

函數參看:
http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=245

呵呵,把以上的程式吃透,最好再多看看指令碼參考手冊,跟我就可以開始ASP的上路了。

補:

Function過程與Sub過程類似,但是Function過程可以傳回值。
Function過程也可以使用由調用過程傳遞的常數、變數或運算式作為參數。如果Function過程無任何參數,則Function語句必須包含括弧()。
Function過程通過函數名返回一個值,這個值是在過程的語句中賦給函數名。Function傳回值的資料類型總是Variant。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.