//———————————————————–
//得到用户输入的单词
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";
}
