//得到用戶輸入的單詞
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 += "(這樣將生成一個空的新文件)";
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 + "iIndex: " + 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 += "您確定要這樣做嗎?";
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 += "操作將會產生" + 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 += "請至少輸入一個單詞";
alert(strPrompt);
txtWord[iCount].select();
return;
}
//隨機抽取當前類別詞匯中的一個單詞
//加入到句子中
iRndIndex = Math.floor(Math.random()*iWrdCnt);
strSentence += m_astrWords[iCount][iRndIndex];
//alert("iWrdCnt: " + iWrdCnt + "iRndIndex: " + 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";
}