=========== 添加vbscript代碼的三種方法 ============
假設已有一個名為btnSubmit的按鈕,添加vbscript代碼的方法有三種:
第一種,最常用:
<script language="VBScript">
private sub btnSubmit_OnClick
msgbox("OK!")
end sub
</script>
========On Error Resume Next語句=========
若不使用 On Error Resume Next 語句,發生的任何執行階段錯誤都將是致命的,即,顯示錯誤資訊並終止運行。
On Error Resume Next 會使程式從緊隨產生錯誤的語句之後的語句繼續執行,或是從緊隨最近一次調用過程(該過程含有 On Error Resume Next 語句)的語句繼續運行。這個語句可以不顧運行時的錯誤,繼續執行程式,之後您可以在過程內部建立錯誤處理常式。所以,如果希望在常式中進行內部錯誤處理,則應在每一個調用的常式中執行 On Error Resume Next 語句。
==========VBScript中的錯誤處理功能============
嚴格地講,VBScript中的錯誤處理功能是比較弱的,當錯誤發生時,它沒有辦法直接調用錯誤處理程式,它發生錯誤的時候並沒有產生中斷或提示資訊的機制。在Visual Basic中,錯誤發生的時候可以利用On Error Goto...的語句來進行錯誤處理,當錯誤發生時,程式會自動跳轉到用Goto後面的標號指示的代碼處。可是VBScript中不允許這樣使用。
但是利用On Error Resume Next語句,還是可以實現某種程度的錯誤捕捉功能,只不過所有的錯誤陷阱要麼必須線上處理,要麼只能報告程式中出現的最後一個錯誤。下面給出了VBScript的錯誤處理基本架構。
Sub MySub()
On Error Resume Next
........
'線上處理
if Err.Number=? then
........
end if
'報告指令碼遇到的上一個錯誤的資訊
if Err.Number<>0 then
MsgBox Err.Description
end if
End Sub
注意,當使用On Error Resume Next語句後,除了最後一個錯誤,前面發生過的錯誤都已經被清除了,所以無法知道發生過的所有錯誤。為了能夠及時處理,建議採用線上處理方法。
<script language="VBScript">
function ReadCookie(pCook)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'本函數用來讀取Cookie中的資料。
'流程:先刪去Cookie中pCook變數前面的字串,再刪去pCook變數後面的字串,就是pCook的值。
'輸入:要讀取的變數名。
'輸出:該變數名的值。如果沒有該變數的值,為其賦初值。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim whereis_pCook '要尋找的pCook標記名在Cookie中的起始位置
dim howlong_pCook '要尋找的pCook標記名的長度
dim howlong_cookie '整個Cookie的長度
dim whereis_FenHao '尋找endstring中的分號(;)的起始位置
dim endstring '存放臨時字串,該字串經處理最後得到pCook的值
whereis_pCook = Instr(Document.Cookie,pCook)
if whereis_pCook = 0 then
'如果當前Cookie中沒有該pCook值,就為其賦初值
select case pCook
case "value1"
document.Cookie="value1=100"
endstring="100"
case "value2"
document.Cookie="value2=good"
endstring="good"
case "value3"
document.Cookie="value3=sale50"
endstring="sale50"
end select
else
howlong_pCook = len(pCook)
howlong_cookie=len(document.cookie)
'從Cookie中pCook的值開始到Cookie最後的字串。
'要注意,Cookie在各值之間用分號分隔,並且分號後還跟一個空格,所以下面的語句中有“+1”
'另外,各變數名與變數之間用等號隔,所以下面的語句中有“-1”
'當然,以上兩個量相互抵消,但為了更好地理解本語句,故仍保留
endstring = right(document.cookie,howlong_cookie - whereis_pCook + 1 - howlong_pCook - 1)
whereis_FenHao=instr(endstring,";")
'如果沒有找到分號,說明此變數是最後一個,所以endstring就是最終的結果;
'如果找到分號,就取分號前面的字串,得到最終結果。
if whereis_FenHao <> 0 then
endstring=left(endstring,whereis_FenHao - 1)
end if
end if
ReadCookie=endstring
end function
</script>
==========日曆控制項============
作業系統:Windows2000 Professional
在FrontPage2000下名為“Calendar控制項9.0”,classid="clsid:8E27C92B-1264-101C-8A2F-040224009C02"
可以用Calendar.year,Calendar.month,Calendar.day調用該控制項的年月日值,當日曆中改變年月日時分別觸發Calendar_NewYear(),Calendar_NewMonth(),Calendar_NewDay()事件。
要注意,在下拉式清單中選擇了年或月後,Calendar.year,Calendar.month,Calendar.day三個值均會被清零。
=================== elements 對象 ===================
private sub window_OnLoad()
for i = 0 to 6
frmRes.elements(i).value=""
next
end sub
這段視窗初始化程式將頁面中frmRes表單的最前面7個元素(第0-第6個元素)的值清空,注意,不能將迴圈條件寫成
for i=1 to 7
因為這樣系統將認為是第1-第7個元素,系統對元素的標識是從0開始的。
====================== Set語句 =======================
dim TheForm
set TheForm = document.frmRes
上面語句設定用TheForm變數引用frmRes表單,可以減少書寫,並使對頁面的變動有更強的適應性。在程式中可以這樣引用frmRes的元素:
TheForm.txtName.focus
注意:Set語句將對象引用賦給變數或屬性,設定TheForm變數的語句前面必須要用set引導,否則將出錯。
當使用 Set 將一個對象引用賦給變數時,並不是為變數建立對象的副本,而是建立對象的引用。可有多個物件變數引用同一個對象。因為這些變數是對象引用(不是副本),所以對對象所作的任何改動都會影響所有引用該對象的變數。
============== alert和 confirm 語句 =================
alert "比爾正在認真地進行一項生物實驗"
window對象的alert方法用來顯示提示文本,如上圖。window對象的confirm方法彈出一個含有“確定”和“取消”按鈕的對話方塊,可以用分支程式處理使用者的選擇。如上圖。
flag=prompt ("比爾進行中生物實驗嗎?")
if flag then
msgbox "進行中中……"
else
msgbox "玩去了……"
end if