以下為引用的內容: <%@ Language = VBScript%> <% Option Explicit 'Last Updated By Recon On 03/16/2001
Dim m_iPartCnt Dim m_strPrompt Dim m_astrSenPart(), m_astrFileName() Dim m_astrWords(), m_aiOpStatus()
'------------------------------------------ '常變量說明 'm_iPartCnt :詞匯分類的數目。整型 'm_strPrompt :對文件操作完畢后的提示。字符串型 'm_astrSenPart :詞匯分類的名稱。字符型數組 'm_astrFileName :記錄各類詞匯文件的文件名。字符型數組 'm_astrWords :紀錄各類詞匯。二維字符型數組 'm_aiOpStatus :紀錄對各個文件操作后的狀態。整型數組 '------------------------------------------
'ShowMethod m_iPartCnt = 4 m_strPrompt = "" ReDim m_astrSenPart(m_iPartCnt) ReDim m_astrFileName(m_iPartCnt) ReDim m_astrWords(m_iPartCnt) ReDim m_aiOpStatus(m_iPartCnt)
'定義各種詞匯分類的名稱 m_astrSenPart(0) = "主語" m_astrSenPart(1) = "程度狀語" m_astrSenPart(2) = "地點狀語" m_astrSenPart(3) = "謂語"
'定義記載各類詞匯文件的名稱 m_astrFileName(0) = "Who.txt" m_astrFileName(1) = "How.txt" m_astrFileName(2) = "Where.txt" m_astrFileName(3) = "What.txt"
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then '如果頁面的請求方式是 POST
'************************ '獲得客戶端的信息 '************************ Dim m_iSenPart Dim m_strOpWay Dim m_bRptedData
'------------------------------------------ '常變量說明 'm_iSenPart :表示詞匯分類的數字。整型 ' 詞匯的分類來自數組m_astrSenPart ' 可能的值有: ' 0:主語 ' 1:程度狀語 ' 2:地點狀語 ' 3:謂語
'm_strOpWay :文件操作方式。字符串型 ' 可能的值有: ' 1、SAVE :將某類詞匯存入文件 ' 2、SAVEALL :將所有類別的詞匯存入文件 ' 3、LOAD :從文件中載入某類詞匯 ' 4、LOADALL :從文件中載入所有類別的詞匯
'm_bRptedData :表示本次提交的表單數據和上次是否相同。布爾型 ' 可能的值有: ' 1、False :表單數據不重復 ' 2、True :表單數據重復(即重復提交表單) '------------------------------------------
'ShowForm '獲得用戶請求的操作方式 m_strOpWay = Request.Form("txtOpWay") 'Show("m_strOpWay")
'獲得各個類別的單詞 For m_iCount = 0 To (m_iPartCnt - 1) If Request.Form("txtWords" & m_iCount) <> "" Then m_astrWords(m_iCount) = Split(Request.Form("txtWords" & m_iCount), ",") End If 'Response.Write UBound(m_astrWords(m_iCount)) & "<br>" Next
'檢測是否重復提交表單 'If Session("FormInf") = Request.Form Then ' '表單是重復提交 ' m_bRptedData = True 'Else ' '表單是非重復提交 ' Session("FormInf") = Request.Form ' m_bRptedData = False 'End If 'Show("m_bRptedData")
'************************ '對單詞文件進行操作 '************************ 'If m_bRptedData = False Then
Dim m_iCount, m_iErrCnt Dim m_strFilePath
'------------------------------------------ '常變量說明 'm_iCount :計數器。整型 'm_iErrCnt :發生操作失敗的次數。整型 'm_strFilePath :記錄各類詞匯文件的路徑。字符串型 '------------------------------------------
'獲得放置詞匯文件的路徑 m_strFilePath = Request.ServerVariables("PATH_TRANSLATED") m_strFilePath = Left(m_strFilePath, InStrRev(m_strFilePath, "\")) 'm_strFilePath = m_strFilePath & "Words\" 'Show("m_strFilePath")
'開始操作文件 'Response.Write "Begin to Operate Word Files<br>" Select Case m_strOpWay Case "SAVE" '保存單詞到文件中 m_iSenPart = CInt(Request.Form("txtSenPart")) m_aiOpStatus(m_iSenPart) = SaveFile(m_iSenPart)
'根據操作狀態,得到提示信息 Select Case m_aiOpStatus(m_iSenPart) Case 0 m_strPrompt = "[" & m_astrSenPart(m_iSenPart) & "]部分單詞已成功地被保存到文件中"
Case 1 m_strPrompt = "[" & m_astrSenPart(m_iSenPart) & "]部分文件保存失敗" End Select
Case "SAVEALL" '保存所有類別的單詞到文件中 m_iErrCnt = 0 For m_iCount = 0 To (m_iPartCnt - 1) m_aiOpStatus(m_iCount) = SaveFile(m_iCount) If m_aiOpStatus(m_iCount) = 1 Then m_iErrCnt = m_iErrCnt 1 End If Next
'根據操作狀態,得到提示信息 Select Case m_iErrCnt Case 0 m_strPrompt = "所有類別的單詞都已成功地被保存到文件中"
Case m_iPartCnt m_strPrompt = "所有類別的單詞文件都保存失敗"
Case Else m_strPrompt = "其中," For m_iCount = 0 To (m_iPartCnt - 1) If m_aiOpStatus(m_iCount) = 1 Then m_strPrompt = m_strPrompt & "[" & m_astrSenPart(m_iCount) & "]、" End If Next m_strPrompt = Left(m_strPrompt, Len(m_strPrompt) - 1) m_strPrompt = m_strPrompt & "部分文件保存失敗" End Select
Case "LOAD" '從文件中載入單詞 m_iSenPart = CInt(Request.Form("txtSenPart")) m_aiOpStatus(m_iSenPart) = LoadFile(m_iSenPart)
'根據操作狀態,得到提示信息 Select Case m_aiOpStatus(m_iSenPart) Case 0 m_strPrompt = "[" & m_astrSenPart(m_iSenPart) & "]部分單詞已成功地被載入"
Case 1 m_strPrompt = "[" & m_astrSenPart(m_iSenPart) & "]部分文件不存在,載入失敗" End Select
Case "LOADALL" '從各個文件中載入單詞 m_iErrCnt = 0 For m_iCount = 0 To (m_iPartCnt - 1) m_aiOpStatus(m_iCount) = LoadFile(m_iCount) If m_aiOpStatus(m_iCount) = 1 Then m_iErrCnt = m_iErrCnt 1 End If Next
'根據操作狀態,得到提示信息 Select Case m_iErrCnt Case 0 m_strPrompt = "所有類別的單詞都已成功地被載入"
Case m_iPartCnt m_strPrompt = "所有類別的單詞文件都不存在,載入完全失敗"
Case Else m_strPrompt = "其中," For m_iCount = 0 To (m_iPartCnt - 1) If m_aiOpStatus(m_iCount) = 1 Then m_strPrompt = m_strPrompt & "[" & m_astrSenPart(m_iCount) & "]、" End If Next m_strPrompt = Left(m_strPrompt, Len(m_strPrompt) - 1) m_strPrompt = m_strPrompt & "部分文件不存在,載入部分失敗" End Select End Select
'End If End If 'Response.Write "End to Operate Word Files<br>" 'Response.Write "Begin to Write Client Page<br>" %>
<html> <head> <title> 詞語搭配游戲 </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content="">
<!--風格表--> <style> <!-- /*英文字體1*/ .fontEng1 { font-family: TIMES NEW ROMAN; font-style: ; }
/*英文字體2*/ .fontEng2 { font-family: TIMES NEW ROMAN; font-style: ITALIC; }
/*強調字體*/ .fontEmp { color: RED; }
/*鏈接*/ .link { font-family: TIMES NEW ROMAN; font-style: ITALIC; text-decoration: NONE; }
/*被顯示的單詞列表*/ .listShown { position: ABSOLUTE; width: 140px; height: 200px; display: INLINE; border: LIGHTCORAL 1px SOLID; background-color: GAINSBORO; }
/*被隱藏的單詞列表*/ .listHidden { position: ABSOLUTE; width: 140px; height: 200px; display: NONE; border: LIGHTCORAL 1px SOLID; background-color: GAINSBORO; }
/*被固定的單詞列表*/ .listFixed { position: ABSOLUTE; width: 140px; height: 200px; display: INLINE; border: RED 1px SOLID; background-color: GAINSBORO; }
/*被顯示的幫助列表*/ .helpShown { position: ABSOLUTE; width: ; height: ; display: block; border: LIGHTCORAL 1px SOLID; background-color: GAINSBORO; }
/*被隱藏的幫助列表*/ .helpHidden { position: ABSOLUTE; width: ; height: ; display: NONE; border: LIGHTCORAL 1px SOLID; background-color: GAINSBORO; }
/*被固定的幫助列表*/ .helpFixed { position: ABSOLUTE; width: ; height: ; display: block; border: RED 1px SOLID; background-color: GAINSBORO; }
/*被強調顯示的標簽*/ .lblMOver { text-decoration: NONE; color: LIGHTCORAL; background-color: ; }
/*正常顯示的標簽*/ .lblMOut { text-decoration: NONE; color: ; background-color: ; }
/*被點擊過的標簽*/ .lblClicked { text-decoration: UNDERLINE; color: RED; background-color: ; }
/*高亮顯示的按鈕*/ .btnLighted { width: 105px; color: BLUE; background-color: ; }
/*正常顯示的按鈕*/ .btnDelighted { width: 105px; color: ; background-color: ; }
/*高亮顯示的單詞列表項*/ .optLighted { text-decoration: UNDERLINE; color: BLUE; background-color: ; cursor: HAND; }
/*正常顯示的單詞列表項*/ .optDelighted { text-decoration: NONE; color: ; background-color: ; cursor: ; } --> </style>
<!--客戶端腳本--> <script language="JavaScript"> <!-- //客戶端公用及測試函數 //************************ //函數名 :lTrim //功能 :去掉字串左邊的空格 //輸入 :1、strTemp :要規整的字串。字符串型 //輸出 :規整后的字串。字符串型 //************************ function lTrim(strTemp) { var iCount, iLength; //------------------------------------------ //常變量說明 //iCount :計數器。整型 //iLength :字串的長度。整型 //------------------------------------------
iLength = strTemp.length; for (iCount = 0; iCount < iLength; iCount ) if (strTemp.charAt(iCount) != " ") return strTemp.substring(iCount, iLength);
return ""; }
//************************ //函數名 :rTrim //功能 :去掉字串右邊的空格 //輸入 :1、strTemp :要規整的字串。字符串型 //輸出 :規整后的字串。字符串型 //************************ function rTrim(strTemp) { var iCount, iLength; //------------------------------------------ //常變量說明 //iCount :計數器。整型 //iLength :字串的長度。整型 //------------------------------------------
iLength = strTemp.length; for(iCount = iLength - 1; iCount >= 0; iCount --) if (strTemp.charAt(iCount) != " ") return strTemp.substring(0, iCount 1);
return ""; }
//************************ //函數名 :trim //功能 :去掉字串兩邊的空格 //輸入 :1、strTemp :要規整的字串。字符串型 //輸出 :規整后的字串。字符串型 //************************ function trim(strTemp) { return rTrim(lTrim(strTemp)); }
//將2位數字轉換成2位數字字串 //************************ //函數名 :get2bNumStr //功能 :轉換2位的數字成2位的數字字串 //輸入 :1、iNumber :要轉換的數字。整型 //輸出 :轉換后得到的數字字串。整型 //************************ function get2bNumStr(iNumber) { var str2bNum; //------------------------------------------ //常變量說明 //str2bNum :數字字串。字符串型 //------------------------------------------
if (parseInt(iNumber) < 10) str2bNum = "0" iNumber; else str2bNum = "" iNumber;
return str2bNum; }
//************************ //函數名 :assignFunc //功能 :指定元素的事件處理函數 //輸入 :1、ele :要指定事件處理函數的元素。對象型 // 2、func :事件處理函數。函數型 // 3、event :事件類型。字符串型 //輸出 :無 //************************ function assignFunc(ele, func, event) { var iCount, iEleCount; var strEvent;
//------------------------------------------ //常變量說明 //iCount :計數器。整型 //iEleCount :同名元素集合中元素的個數。整型 //strEvent :事件類型。字符串型 //------------------------------------------
if (event == null) strEvent = "onclick"; else strEvent = event;
iEleCount = ele.length; if (iEleCount == undefined) eval("ele." strEvent " = " func); else for (iCount = 0; iCount < iEleCount; iCount ) eval("ele[iCount]." strEvent " = " func); }
//************************ //函數名 :getEleIndex //功能 :得到發生事件的元素在同名集合中的索引 //輸入 :1、eleSrc :發生事件的元素。對象型 //輸出 :發生事件的元素在同名集合中的索引 //************************ function getEleIndex(eleSrc) { var colSrc; var iCount, iEleCount;
//------------------------------------------ //常變量說明 //colSrc :同名元素集合。對象型數組 //iCount :計數器。整型 //iEleCount :同名元素集合中元素的個數。整型 //------------------------------------------
colSrc = eval(eleSrc.id); iEleCount = colSrc.length; for (iCount = 0; iCount < iEleCount; iCount ) { if (colSrc[iCount] == eleSrc) return iCount; }
return -1; }
//顯示常變量的值(調試用) //!準備刪去 function show(strDef1, strDef2, strDef3, strDef4) { var iCount, iDefCnt; var strShow, strTemp;
iDefCnt = 4; strShow = "[常變量值]"; for (iCount = 1; iCount <= iDefCnt; iCount ) { strTemp = eval("strDef" iCount); if (strTemp != undefined && strTemp != null) strShow = "\n" strTemp ": " eval(strTemp); }
alert(strShow); }
//************************ //函數名 :showArray //功能 :顯示一維數組的元素(調試用) //輸入 :1、array :要顯示的一維數組。數組 //輸出 :無 //************************ function showArray(array) { var iCount, iEleCount; var strShow;
//------------------------------------------ //常變量說明 //iCount :計數器。整型 //iEleCount :數組元素的個數。整型 //strShow :數組元素值構成的字串。字符串型 //------------------------------------------
iEleCount = array.length; strShow = "Array Length: " iEleCount; strShow = "\n---------------------------------\n";
for (iCount = 0; iCount < iEleCount; iCount ) { if (typeof(array[iCount]) == "object") strShow = array[iCount].id " "; else strShow = array[iCount] " "; }
alert(strShow); }
//************************ //函數名 :show2DArray //功能 :顯示二維數組的元素(調試用) //輸入 :1、array :要顯示的二維數組。數組 //輸出 :無 //************************ function show2DArray(array) { var iX, iY, iLen1, iLen2; var strShow;
//------------------------------------------ //常變量說明 //iX :計數器。整型 //iY :計數器。整型 //iLen1 :數組一維的數目。整型 //iLen2 :數組二維的數目。整型 //strShow :數組元素值構成的字串。字符串型 //------------------------------------------
iLen1 = array.length; strShow = "Array 1D Length: " iLen1; strShow = "\n---------------------------------";
for (iX = 0; iX < iLen1; iX ) { strShow = "\n"; iLen2 = array[iX].length; for (iY = 0; iY < iLen2; iY ) strShow = array[iX][iY] " "; }
alert(strShow); } //--> </script>
<script language="JavaScript"> <!-- //--------------------函數列表-------------------------- //window_onload // //getWord //reset //save //load // //showList //hideList //fixList //valueList // //showHelp //hideHelp //fixHelp // //resetAll //saveAll //loadAll //assemble // //lightBtn //delightBtn //lightOpt //delightOpt // //makeOpt //removeOpt //-----------------------------------------------------------
var m_iPartCnt; var m_astrSenPart, m_astrWords; var m_strPrompt; var m_iListFixed, m_iHelpFixed;
//------------------------------------------ //常變量說明 //m_iPartCnt :詞匯分類的數目。整型 //m_astrSenPart :詞匯分類的名稱。字符型數組 //m_astrWords :紀錄各類詞匯。二維字符型數組 //m_strPrompt :文件操作完畢后的提示信息。字符串型 //m_iListFixed :代表被固定單詞列表的數字。整型 // -1表示沒有單詞列表被固定 //m_iHelpFixed :表示幫助列表固定狀態的數字。整型 // -1表示幫助列表沒有被固定 //------------------------------------------
window.onload = window_onload; //----------------------------------------------------------- //初始化頁面 function window_onload() { var iCount, iEleCnt; var colButton; var strHelp;
//------------------------------------------ //常變量說明 //iCount :計數器。整型 //iEleCnt :集合中元素的個數。整型 //colButton :BUTTON元素的集合。對象型數組 //strHelp :幫助文件內容。字符串型 //------------------------------------------
m_iPartCnt = <%= m_iPartCnt%>; m_strPrompt = "<%= m_strPrompt%>"; m_iListFixed = -1; m_iHelpFixed = -1; m_astrSenPart = new Array(); m_astrWords = new Array(); //alert("m_iPartCnt: " m_iPartCnt "\nm_strPrompt: " m_strPrompt);
//得到詞匯分類的名稱和已載入的各類詞匯 <%For m_iCount = 0 To (m_iPartCnt - 1)%> //得到已載入的各類詞匯 <%If IsEmpty(m_astrWords(m_iCount)) = True Then%> m_astrWords[<%= m_iCount%>] = new Array(); <%Else%> m_astrWords[<%= m_iCount%>] = "<%= Join(m_astrWords(m_iCount), ",")%>".split(","); <%End If%>
//得到詞匯分類的名稱 m_astrSenPart[<%= m_iCount%>] = "<%= m_astrSenPart(m_iCount)%>"; <%Next%> //show2DArray(m_astrWords); //showArray(m_astrSenPart);
//將已載入的各類詞匯寫入到頁面中 for (iCount = 0; iCount < m_iPartCnt; iCount ) valueList(m_astrWords[iCount], iCount);
//載入幫助文件 //strHelp = tblHelp.outerHTML; //strHelp = divHelp1.innerHTML; //tblHelp.outerHTML = ""; //divHelp.innerHTML = strHelp; //tblHelp.style.display = ""; //divHelp.style.display = "NONE"; //divHelp.style.left = divHelp1.style.left; //alert("left: " divHelp.style.left "\nleft: " divHelp1.style.left); //alert("pixelleft: " divHelp.style.pixelLeft "\npixelleft: " divHelp1.style.pixelLeft); //alert("posLeft: " divHelp.style.posLeft "\nposLeft: " divHelp1.style.posLeft); //alert("offsetLeft : " divHelp.offsetLeft "\noffsetLeft : " divHelp1.offsetLeft ); //alert("clientLeft : " divHelp.clientLeft "\nclientLeft : " divHelp1.clientLeft );
//指定頁面元素的事件處理函數 assignFunc(txtWord, getWord, "onkeypress"); assignFunc(btnGetWord, getWord); assignFunc(btnReset, reset); assignFunc(btnSave, save); assignFunc(btnLoad, load); assignFunc(lblWordList, showList, "onmouseover"); assignFunc(lblWordList, hideList, "onmouseout"); assignFunc(lblWordList, fixList); assignFunc(lblHelp, showHelp, "onmouseover"); assignFunc(lblHelp, hideHelp, "onmouseout"); assignFunc(lblHelp, fixHelp); assignFunc(btnResetAll, resetAll); assignFunc(btnSaveAll, saveAll); assignFunc(btnLoadAll, loadAll); assignFunc(btnAsb, assemble);
colButton = document.all.tags("BUTTON"); iEleCnt = colButton.length; //showArray(colButton); //alert("iEleCnt: " iEleCnt); for (iCount = 0; iCount < iEleCnt; iCount ) { assignFunc(colButton[iCount], lightBtn, "onmouseover"); assignFunc(colButton[iCount], delightBtn, "onmouseout"); }
//設置頁面初始狀態 if (m_strPrompt != "") alert(m_strPrompt); txtWord[0].focus(); }
//----------------------------------------------------------- //得到用戶輸入的單詞 function getWord() { //只有當在單詞輸入框中按回車或 //按“保存”按鈕時才繼續做下去 if (window.event.type != "keypress" && window.event.type != "click") return; else if (window.event.type == "keypress" && window.event.keyCode != 13) return;
var eleSrc; var iIndex, iNxtWrdIdx; var strWord;
//------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //iIndex :表示詞匯分類的數字。整型 //iNxtWrdIdx :新單詞在單詞數組中的索引。整型 //strWord :用戶輸入的單詞。字符串型 //------------------------------------------
eleSrc = window.event.srcElement; iIndex = getEleIndex(eleSrc); //獲得索引 strWord = trim(txtWord[iIndex].value); //獲得用戶輸入的單詞
//檢測輸入的單詞是否合法 //若是非法的單詞則退出 if (strWord == "") { //若輸入的單詞為空或空格字符串 alert("單詞不能為空或空格字符串"); txtWord[iIndex].select(); return; }
if (strWord.indexOf(",") != -1 || strWord.indexOf(" ") != -1) { //若輸入的單詞包含逗號或空格 alert("單詞不能包含逗號或空格"); txtWord[iIndex].select(); return; }
//將單詞保存到詞匯數組中 iNxtWrdIdx = m_astrWords[iIndex].length; m_astrWords[iIndex][iNxtWrdIdx] = strWord; //showArray(m_astrWords[iIndex]);
//將單詞寫入到頁面中 valueList(m_astrWords[iIndex], iIndex); txtWord[iIndex].value = ""; txtWord[iIndex].focus(); }
//----------------------------------------------------------- //將當前類別所有的單詞從內存中刪去 function reset() { var eleSrc; var iIndex, iCount; var strPrompt;
//------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //iIndex :表示詞匯分類的數字。整型 //iCount :計數器。整型 //strPrompt :操作提示。字符串型 //------------------------------------------
eleSrc = window.event.srcElement; iIndex = getEleIndex(eleSrc); strPrompt = "您確定要從內存中清除[" m_astrSenPart[iIndex] "]部分所有的單詞嗎?"; if (window.confirm(strPrompt) == false) return;
m_astrWords[iIndex] = new Array(); valueList(m_astrWords[iIndex], iIndex); //showArray(m_astrWords[iIndex]);
strPrompt = "單詞清除完畢"; alert(strPrompt); txtWord[iIndex].select(); }
//----------------------------------------------------------- //將所選類別的當前詞匯保存進文件中 function save() { var eleSrc; var iIndex, iCount;
//------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //iIndex :表示詞匯分類的數字。整型 //iCount :計數器。整型 //------------------------------------------
eleSrc = window.event.srcElement; iIndex = getEleIndex(eleSrc);
if (m_astrWords[iIndex].length == 0) { //如果所選類別的當前單詞個數為零 var strPrompt; strPrompt = "[" m_astrSenPart[iIndex] "]部分現在一個可選單詞也沒有,您確定要保存嗎?"; strPrompt = "\n(這樣將生成一個空的新文件)"; if (window.confirm(strPrompt) == false) return; }
//保存當前內存中所有的單詞 for (iCount = 0; iCount < m_iPartCnt; iCount ) eval("frmWords.txtWords" iCount).value = m_astrWords[iCount].join(",");
frmWords.txtSenPart.value = iIndex; frmWords.txtOpWay.value = "SAVE"; frmWords.submit(); }
//----------------------------------------------------------- //從文件中讀取所選類別的單詞紀錄 function load() { var eleSrc; var iIndex, iCount;
//------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //iIndex :表示詞匯分類的數字。整型 //iCount :計數器。整型 //------------------------------------------
eleSrc = window.event.srcElement; iIndex = getEleIndex(eleSrc);
//保存當前內存中所有的單詞 for (iCount = 0; iCount < m_iPartCnt; iCount ) eval("frmWords.txtWords" iCount).value = m_astrWords[iCount].join(",")
frmWords.txtSenPart.value = iIndex; frmWords.txtOpWay.value = "LOAD"; frmWords.submit(); }
//----------------------------------------------------------- //顯示詞匯列表 function showList(iIndex) { //如果未給定參數 iIndex //獲得 iIndex if (iIndex == undefined) { //如果已有單詞列表被固定,退出函數 if (m_iListFixed != -1) return;
var eleSrc; var iIndex;
//------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //iIndex :表示詞匯分類的數字。整型 //------------------------------------------
eleSrc = window.event.srcElement; iIndex = getEleIndex(eleSrc); } //alert("iIndex: " iIndex);
//顯示詞匯列表 //lblWordList[iIndex].innerText = "[" lblWordList[iIndex].innerText "]"; //lblWordList[iIndex].innerText = lblWordList[iIndex].innerText ">"; lblWordList[iIndex].className = "lblMOver"; divWordList[iIndex].className= "listShown"; }
//----------------------------------------------------------- //隱藏詞匯列表 function hideList(iIndex) { //如果未給定參數 iIndex //獲得 iIndex if (iIndex == undefined) { //如果已有單詞列表被固定,退出函數 if (m_iListFixed != -1) return;
var eleSrc; var iIndex;
//------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //iIndex :表示詞匯分類的數字。整型 //------------------------------------------
eleSrc = window.event.srcElement; iIndex = getEleIndex(eleSrc); } //alert("iIndex: " iIndex);
//隱藏詞匯列表 //lblWordList[iIndex].innerText = lblWordList[iIndex].innerText.slice(0, -1); lblWordList[iIndex].className = "lblMOut"; divWordList[iIndex].className= "listHidden"; }
//----------------------------------------------------------- //固定詞匯列表 function fixList() { var eleSrc; var iIndex;
//------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //iIndex :表示詞匯分類的數字。整型 //------------------------------------------
eleSrc = window.event.srcElement; iIndex = getEleIndex(eleSrc);
switch (m_iListFixed) { case -1: //如果還沒有單詞列表被固定 //固定當前列表 m_iListFixed = iIndex; lblWordList[iIndex].className = "lblClicked"; divWordList[iIndex].className= "listFixed"; break;
case iIndex: //如果被固定單詞列表是當前列表 //解固當前列表 m_iListFixed = -1; lblWordList[iIndex].className = "lblMOver"; divWordList[iIndex].className= "listShown"; break;
default: //如果被固定單詞列表不是當前列表 //解固被固定列表 hideList(m_iListFixed); m_iListFixed = -1; lblWordList[iIndex].className = "lblMOver"; showList(iIndex); break; }
//alert("m_iListFixed: " m_iListFixed "\niIndex: " iIndex); }
//----------------------------------------------------------- //寫入某類詞匯已載入的單詞 function valueList(aWords, iSenPart) { var iCount, iWrdCnt; var strListPpt;
//------------------------------------------ //常變量說明 //iCount :計數器。整型 //iWrdCnt :某類詞匯單詞的數目。整型 //strListPpt :單詞列表中的提示。字符串型 //------------------------------------------
//數據準備 iWrdCnt = aWords.length; lblWordCount[iSenPart].innerText = iWrdCnt; strListPpt = "<div><span style='color: RED; font-style: Italic; font-size: 10.5pt;'>"; strListPpt = "雙擊單詞將其刪除</span></div>";
//將單詞寫入列表 if (iWrdCnt != 0) { divWordList[iSenPart].innerHTML = strListPpt; for (iCount = 0; iCount < iWrdCnt; iCount ) divWordList[iSenPart].innerHTML = makeOpt(aWords[iCount], iCount); } else divWordList[iSenPart].innerHTML = strListPpt; }
//----------------------------------------------------------- //顯示幫助列表 function showHelp() { //如果幫助列表已被固定,退出函數 if (m_iHelpFixed == 0) return;
//顯示幫助 lblHelp.className = "lblMOver"; divHelp.className = "helpShown"; }
//----------------------------------------------------------- //隱藏幫助列表 function hideHelp() { //如果幫助列表已被固定,退出函數 if (m_iHelpFixed == 0) return;
//隱藏幫助 lblHelp.className = "lblMOut"; divHelp.className = "helpHidden"; }
//----------------------------------------------------------- //固定幫助列表 function fixHelp() { if (m_iHelpFixed == -1) { //如果幫助列表還未被固定 //固定它 m_iHelpFixed = 0; lblHelp.className = "lblClicked"; divHelp.className = "helpFixed"; } else { //如果幫助列表已被固定 //解固它 m_iHelpFixed = -1; lblHelp.className = "lblMOver"; divHelp.className = "helpShown"; } }
//----------------------------------------------------------- //重置頁面至初始狀態 function resetAll() { var iCount; //------------------------------------------ //常變量說明 //iCount :計數器。整型 //------------------------------------------
for (iCount = 0; iCount < m_iPartCnt; iCount ) { txtWord[iCount].value= ""; m_astrWords[iCount] = new Array(); //將單詞數組清空 valueList(m_astrWords[iCount], iCount); }
txtSentence.value = ""; txtWord[0].focus(); }
//----------------------------------------------------------- //把所有類別的單詞都存入文件 function saveAll() { var iCount, iEmptyCnt; var strPrompt;
//------------------------------------------ //常變量說明 //iCount :計數器。整型 //iEmptyCnt :單詞數目為0的類別個數。整型 //strPrompt :操作提示。字符串型 //------------------------------------------
iEmptyCnt = 0; for (iCount = 0; iCount < m_iPartCnt; iCount ) { //保存當前內存中所有的單詞 eval("frmWords.txtWords" iCount).value = m_astrWords[iCount].join(","); if (m_astrWords[iCount].length == 0) iEmptyCnt ; } //alert("iEmptyCnt: " iEmptyCnt);
if (iEmptyCnt > 0) { switch (iEmptyCnt) { case m_iPartCnt: strPrompt = "所有類別的詞匯單詞個數都為0,操作將會產生" m_iPartCnt "個空文件"; strPrompt = "\n您確定要這樣做嗎?"; break;
default: strPrompt = "其中,"; for (iCount = 0; iCount < m_iPartCnt; iCount ) if (m_astrWords[iCount].length == 0) strPrompt = "[" m_astrSenPart[iCount] "]、"; strPrompt = strPrompt.slice(0, -1); strPrompt = "部分單詞個數為0"; strPrompt = "\n操作將會產生" iEmptyCnt "個空文件"; strPrompt = ",您確定要這樣做嗎?"; }
if (window.confirm(strPrompt) == false) return; }
frmWords.txtOpWay.value = "SAVEALL"; frmWords.submit(); }
//----------------------------------------------------------- //從文件中載入所有類別的單詞 function loadAll() { var iCount; //------------------------------------------ //常變量說明 //iCount :計數器。整型 //------------------------------------------
//保存當前內存中所有的單詞 for (iCount = 0; iCount < m_iPartCnt; iCount ) eval("frmWords.txtWords" iCount).value = m_astrWords[iCount].join(",")
frmWords.txtOpWay.value = "LOADALL"; frmWords.submit(); }
//----------------------------------------------------------- //進行詞匯搭配,得到一個句子 function assemble() { var iCount, iWrdCnt, iRndIndex; var strSentence;
//------------------------------------------ //常變量說明 //iCount :計數器。整型 //iWrdCnt :某類詞匯單詞的個數。整型 //iRndIndex :隨機產生的單詞索引。整型 //strSentence :由各個類別詞匯中的隨機單詞組成的句子。字符串型 //------------------------------------------
strSentence = ""; for (iCount = 0; iCount < m_iPartCnt; iCount ) { //如果當前類別詞匯的個數為0 //給出提示,并中止搭配 iWrdCnt = m_astrWords[iCount].length; if (iWrdCnt == 0) { var strPrompt; //------------------------------------------ //常變量說明 //strPrompt :操作提示。字符串型 //------------------------------------------
strPrompt = "[" m_astrSenPart[iCount] "]部分一個可選單詞也沒有"; strPrompt = "\n請至少輸入一個單詞"; alert(strPrompt); txtWord[iCount].select(); return; }
//隨機抽取當前類別詞匯中的一個單詞 //加入到句子中 iRndIndex = Math.floor(Math.random()*iWrdCnt); strSentence = m_astrWords[iCount][iRndIndex]; //alert("iWrdCnt: " iWrdCnt "\niRndIndex: " iRndIndex); }
strSentence = "。"; txtSentence.value = strSentence; }
//使鼠標移到之處的按鈕 //產生“點亮”的效果 function lightBtn() { var eleSrc; //------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //------------------------------------------
eleSrc = window.event.srcElement; while (eleSrc.tagName.toUpperCase() != "BUTTON") eleSrc = eleSrc.parentElement; eleSrc.className = "btnLighted"; }
//使鼠標離開的按鈕 //還原為初始狀態 function delightBtn() { var eleSrc; //------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //------------------------------------------
eleSrc = window.event.srcElement; while (eleSrc.tagName.toUpperCase() != "BUTTON") eleSrc = eleSrc.parentElement; eleSrc.className = "btnDelighted"; }
//在列表中,使鼠標移到之處的單詞 //產生“點亮”的效果 function lightOpt(ele) { var eleSrc; //------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //------------------------------------------ eleSrc = ele; eleSrc.className = "optLighted"; }
//在列表中,使鼠標離開的單詞 //還原為初始狀態 function delightOpt(ele) { var eleSrc; //------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //------------------------------------------
eleSrc = ele; eleSrc.className = "optDelighted"; }
//得到定義過的將加入列表的單詞 function makeOpt(strWord, iWrdIdx) { var strOptHead, strOptFoot; var strOptWord;
//------------------------------------------ //常變量說明 //strOptHead :重定義單詞頭。字符串型 //strOptFoot :重定義單詞尾。字符串型 //strOptWord :重定義單詞。字符串型 //------------------------------------------
strOptHead = "<div class='optDelighted' onmouseover='lightOpt(this);' onmouseout='delightOpt(this);' ondblclick='removeOpt(this);' wrdIdx='" iWrdIdx "'>"; strOptFoot = "</div>"; strOptWord = strOptHead strWord strOptFoot; //alert(strOptWord);
return strOptWord; }
//刪除列表中的單詞 function removeOpt(ele) { var eleSrc; var iIndex, iWrdIdx; var astrWords, astrHead, astrFoot;
//------------------------------------------ //常變量說明 //eleSrc :發生事件的元素 //iIndex :表示詞匯分類的數字。整型 //iWrdIdx :單詞在單詞數組中的索引。整型 //astrWords :某類詞匯單詞數組。字符串型數組 //astrHead :某類詞匯單詞數組頭部分。字符串型數組 //astrFoot :某類詞匯單詞數組尾部分。字符串型數組 //------------------------------------------
eleSrc = ele; iIndex = getEleIndex(eleSrc.parentElement); iWrdIdx = parseInt(eleSrc.wrdIdx);
//將單詞從詞匯數組中刪去 //showArray(m_astrWords[iIndex]); astrWords = m_astrWords[iIndex].concat(); astrHead = astrWords.slice(0, iWrdIdx); astrFoot = astrWords.slice(iWrdIdx 1); m_astrWords[iIndex] = astrHead.concat(astrFoot); //showArray(astrHead); //showArray(astrFoot); //showArray(m_astrWords[iIndex]);
//將剩余的單詞重新寫入到頁面中 valueList(m_astrWords[iIndex], iIndex); txtWord[iIndex].select(); } //--> </script> </head>
<body> <!--標題--> <div align="CENTER"> <span style="font-size: 20pt; font-weight: BOLD">詞語搭配游戲</span> <span class="fontEng2">v1.0</span> </div>
<hr style="visibility: HIDDEN"> <!--主表格1--> <table border="0" align="CENTER" width="80%">
<colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup> <colgroup align="CENTER"></colgroup> <colgroup></colgroup>
<%For m_iCount = 0 To (m_iPartCnt - 1)%> <tr> <td><%= m_astrSenPart(m_iCount)%></td> <td width="20%"><input type="text" id="txtWord" style="width: 100%"></td> <td><button id="btnGetWord" style="width: 75px" title="將單詞保存到內存中">保存</button></td> <td><button id="btnReset" style="width: 75px" title="從內存中刪去當前類別所有的單詞">重置</button></td> <td><button id="btnSave" style="width: 75px" title="將單詞保存到文件中">存入</button></td> <td><button id="btnLoad" style="width: 75px" title="從文件中載入單詞">載入</button></td> <td width="15%"><label id="lblWordList" title="單擊固定我">單詞列表</label></td> <td> <div id="divWordList" class="listHidden"></div> 個數:<label id="lblWordCount" class="fontEng1"><%= 0%></label> </td> </tr> <%Next%>
</table>
<hr style="visibility: HIDDEN"> <hr style="color: BLUE"> <!--主表格2--> <table border="0" align="CENTER" width="80%"> <colgroup width="16%"></colgroup> <colgroup width="16%"></colgroup> <colgroup width="16%"></colgroup> <colgroup></colgroup>
<tr> <td><button id="btnResetAll" accesskey="r" title="從內存中刪去所有類別的單詞" class="btnDelighted">全部重置 <u>R</u></button></td> <td><button id="btnSaveAll" accesskey="s" title="將所有類別的單詞保存到文件中" class="btnDelighted">全部存入 <u>S</u></button></td> <td><button id="btnLoadAll" accesskey="l" title="從文件中載入所有類別的單詞" class="btnDelighted">全部載入 <u>L</u></button></td> <td> <span style="font-size: 9pt; color: RED;">請單擊</span> <label id="lblHelp" title="單擊固定我">游戲說明</label> <!--幫助說明表格--> <div id="divHelp" class="helpHidden"> <table id="tblHelp" border="0" align="CENTER" width="300px" style="font-size: 9pt;"> <colgroup width="75px"></colgroup> <colgroup></colgroup>
<tr><td colspan="2"> <a href="#1" style="color: BLUE;">游戲步驟</a> <a href="#2" style="color: BLUE;">操作說明</a> <a href="#3" style="color: BLUE;">游戲起源</a> <a href="#4" style="color: BLUE;">制作原因</a> <a href="#5" style="color: BLUE;">游戲功效</a> <a name="0" style="display: NONE;">TOP</a> </td></tr>
<!--游戲步驟--> <tr><td colspan="2"></td></tr> <tr><td colspan="2"> [<a name="1" style="color: BLUE;">游戲步驟</a>] <a href="#0" class="link">TOP</a> </td></tr> <tr><td colspan="2"> <span class="fontEng1"><1></span>在每個部分的<span class="fontEmp">輸入框</span>中輸入單詞, 按<span class="fontEmp">回車</span>或<span class="fontEmp">“保存”</span>按鈕存入內存中; 或按<span class="fontEmp">“載入”</span>按鈕調出以前保存的某類別單詞紀錄; 或按<span class="fontEmp">“全部載入”</span>按鈕調出以前保存的所有類別單詞紀錄<br> <span class="fontEng1"><2></span>按<span class="fontEmp">“開始搭配”</span>按鈕,系統將從各類單詞中隨機抽取一個,組成一個句子 </td></tr>
<!--操作說明--> <tr><td colspan="2"></td></tr> <tr><td colspan="2"> [<a name="2" style="color: BLUE;">操作說明</a>] <a href="#0" class="link">TOP</a> </td></tr> <tr> <td>保存</td> <td>得到用戶輸入的單詞</td> </tr>
<tr> <td>重置</td> <td>將當前類別所有的單詞從內存中刪去</td> </tr>
<tr> <td>存入</td> <td>將所選類別的當前詞匯保存進文件中</td> </tr>
<tr> <td>載入</td> <td>從文件中讀取所選類別的單詞紀錄</td> </tr>
<tr> <td>全部重置</td> <td>重置頁面至初始狀態</td> </tr>
<tr> <td>全部保存</td> <td>把所有類別的單詞都存入文件</td> </tr>
<tr> <td>全部載入</td> <td>從文件中載入所有類別的單詞</td> </tr>
<tr> <td>開始搭配</td> <td>進行詞匯搭配,得到一個句子</td> </tr>
<tr><td></td></tr> <tr><td colspan="2"> <span class="fontEng1"><1></span> <span class="fontEmp">將鼠標移至“單詞列表”處</span>,會彈出該類詞匯的單詞列表; <span class="fontEmp">將鼠標移開</span>,列表會自動隱藏; <span class="fontEmp">點擊“單詞列表”</span>,會固定單詞列表; <span class="fontEmp">再次點擊</span>,會取消固定<br>
<span class="fontEng1"><2></span> 在<span class="fontEmp">固定住一個單詞列表</span>后, <span class="fontEmp">雙擊</span>該列表中的某個單詞,可以將該單詞從內存中刪去<br>
<span class="fontEng1"><3></span> 輸完一個單詞后,<span class="fontEmp">直接按回車</span>就可以保存了,這樣比按“保存”保存單詞更方便 </td></tr>
<!--游戲起源--> <tr><td colspan="2"></td></tr> <tr><td colspan="2"> [<a name="3" style="color: BLUE;">游戲起源</a>] <a href="#0" class="link">TOP</a> </td></tr> <tr><td colspan="2"> 這個游戲想法來自于小時候玩的紙團游戲。那時和姐姐在家里閑得無聊,就玩這個,哈哈。 玩法很簡單,做一些紙片,分成四堆,分別寫上<span class="fontEmp">親朋好友的名字</span>、<span class="fontEmp">形容程度的詞語</span>、<span class="fontEmp">關于地點的詞語</span>和<span class="fontEmp">所做的事情</span>。 然后,將紙片捏成紙團,<span class="fontEng1">OK, Let's Start!</span> 現在從每堆中抽出一個紙團,就有四個詞語,將它們組成一句話,因為是隨便抽的,有時能組成很搞笑的句子。 如:陳楠興奮地在大街上跳夏威夷草裙舞;萬民悠閑地在公園里洗澡。^_ </td></tr>
<!--制作原因--> <tr><td colspan="2"></td></tr> <tr><td colspan="2"> [<a name="4" style="color: BLUE;">制作原因</a>] <a href="#0" class="link">TOP</a> </td></tr> <tr><td colspan="2"> 主要是無聊,想做個游戲娛樂一下自己,當然也希望大家能從中得到笑聲。 其次也想鍛煉一下自己的技術,以前用<span class="fontEng1">VB</span>做過一個,不是很好,這次用的是<span class="fontEng1">ASP</span>,不知有沒有進步,呵呵 這個版本我大概地測試了一下,沒發現大的<span class="fontEng1">bug</span>。如果您在游戲中發現了問題或有什么建議,請一定告訴我,在此先謝謝了! 我的信箱是<a href="mailto: iamchn@21cn.com" class="link">iamchn@21cn.com</a>。不好你就說嗎!不可能你說好我又說不好,你不說好我又說好的,^_ </td></tr>
<!--游戲功效--> <tr><td colspan="2"></td></tr> <tr><td colspan="2"> [<a name="5" style="color: BLUE;">游戲功效</a>] <a href="#0" class="link">TOP</a> </td></tr> <tr><td colspan="2"> 因為是搞笑游戲,所以能使你心情愉快、青春煥發,間接增加找對象的成功率; 因為不用做紙團了,減少了浪費和污染,從而美化了世界環境; 相信還有很多功效,請大家幫我找。哈哈。 </td></tr> </table> </div>
</td> </tr>
<tr> <td><button id="btnAsb" accesskey="a" title="從每個類別詞匯中隨機抽取一個單詞,組成一個句子"class="btnDelighted">開始搭配 <u>A</u></button></td> <td colspan="3"><input type="text" id="txtSentence" style="width: 100%"></td> </tr> </table> <hr style="color: BLUE">
<!--提交表單--> <form id="frmWords" method="POST" action="" style="display: NONE;"> <%For m_iCount = 0 To (m_iPartCnt - 1)%> <input type="text" name="txtWords<%= m_iCount%>"> <%Next%> <input type="text" name="txtSenPart"> <input type="text" name="txtOpWay"> </form>
<!--版權--> <div align="CENTER"> <div> © <span class="fontEng2">2001 China Sentin Sci. & Tech. Co., Ltd.</span> <span class="fontEng2">All Rights Reserved.</span> </div> <div> <span class="fontEng2">Authored by</span> <a href="mailto: iamchn@21cn.com" class="link">Recon</a></span> <a href="http://recon.top263.net/" class="link">http://recon.top263.net/</a> </div> </div> </body> </html>
<% '以下是服務器端腳本 '用到的函數和過程
'************************ '函數名 :SaveFile '功能 :將某類詞匯保存到文件中 '輸入 :1、iSenPart :表示詞匯分類的數字。整型 ' 可能的值有: ' 0:主語 ' 1:程度狀語 ' 2:地點狀語 ' 3:謂語 '輸出 :對文件操作后的狀態值。整型 ' 可能的值有: ' 0:操作成功 ' 1:操作失敗 '************************ Function SaveFile(iSenPart) Dim fsoMain, tsfWords Dim iCount, iWrdCnt Dim iOpStatus
'------------------------------------------ '常變量說明 'fsoMain :FSO對象 'tsfWords :TEXTSTREAM對象 'iCount :計數器。整型 'iWrdCnt :某類詞匯單詞的數目。整型 'iOpStatus :文件操作完畢后的狀態。整型 '------------------------------------------
Set fsoMain = Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT") Set tsfWords= fsoMain.CreateTextFile(m_strFilePath & m_astrFileName(iSenPart), True) tsfWords.WriteLine("[" & m_astrSenPart(iSenPart) & "部分]")
'如果該類別至少有一個單詞 If IsEmpty(m_astrWords(iSenPart)) = False Then iWrdCnt = UBound(m_astrWords(iSenPart)) 1 For iCount = 0 To (iWrdCnt - 1) tsfWords.WriteLine(m_astrWords(iSenPart)(iCount)) Next End If
tsfWords.Close iOpStatus = 0
SaveFile = iOpStatus End Function
'************************ '函數名 :LoadFile '功能 :從文件中載入某類詞匯 '輸入 :1、iSenPart :表示詞匯分類的數字。整型 ' 可能的值有: ' 0:主語 ' 1:程度狀語 ' 2:地點狀語 ' 3:謂語 '輸出 :對文件操作后的狀態值。整型 ' 可能的值有: ' 0:操作成功 ' 1:操作失敗 '************************ Function LoadFile(iSenPart) Dim fsoMain, tsfWords Dim strLoaded Dim iOpStatus
'------------------------------------------ '常變量說明 'fsoMain :FSO對象 'tsfWords :TEXTSTREAM對象 'strLoaded :某類詞匯所有單詞構成的字符串。字符串型 'iOpStatus :文件操作完畢后的狀態。整型 '------------------------------------------
Set fsoMain = Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT") If fsoMain.FileExists(m_strFilePath & m_astrFileName(iSenPart)) = True Then '如果存在紀錄文件 strLoaded = "" Set tsfWords= fsoMain.OpenTextFile(m_strFilePath & m_astrFileName(iSenPart), 1) tsfWords.SkipLine Do While tsfWords.AtEndOfStream = False strLoaded = strLoaded & tsfWords.ReadLine & "," Loop
If strLoaded <> "" Then strLoaded = Left(strLoaded, Len(strLoaded) - 1) m_astrWords(iSenPart) = Split(strLoaded, ",") Else m_astrWords(iSenPart) = Empty End If
tsfWords.Close iOpStatus = 0 Else '如果不存在紀錄文件 iOpStatus = 1 End If
LoadFile = iOpStatus End Function %>
<% '以下是服務器端腳本 '用于測試的函數和過程
Sub Show(strDef) Response.Write strDef & ": " & Eval(strDef) & "<br>" End Sub
Sub ShowMethod() Response.Write "Request Method: " & Request.ServerVariables("REQUEST_METHOD") & "<br>" End Sub
Sub ShowForm() Dim iCount Dim strProp
iCount = 0 Response.Write "*********Form Information******<br>" For Each strProp In Request.Form iCount = iCount 1 Response.Write iCount & "." & strProp & ": " & Request.Form(strProp) & "<br>" Next Response.Write "*********Form End**************<br>" End Sub %>
|