📄 menutool_change.js
字号:
/*
************函数的使用说明
放到页面<head>中间
<SCRIPT language=javascript src="<%=request.getContextPath()%>/include/menuTool.js"></SCRIPT>
放到显示使用位置
<A onmouseover=showmenu(1) onmouseout=delayhidemenu() href="#"><img border="0" src="<%=request.getContextPath()%>/images/mouse-rq.gif" width="16" height="14"></a>
注意在使用时候的表格ID
页面调用函数一般放到页面的最后
var insertContext=new Array()
function showmenu(modeLayer){
//初始化数据
//插入表格内容
insertContext[0]="<input type=\"checkbox\" value=\"ON\" name=C1></input>
<input type=\"hidden\" name=\"sub01_03_02_field001\" value=\"<%=SN%>\">
<input type=\"hidden\" name=\"sub01_03_02_field002\" value=\"sub01_03_02\">
<input type=\"hidden\" name=\"sub01_03_02_field003\" value=\"\">";
insertContext[1]="<DIV onclick=\"getRowIndex();\"><input name=\"sub01_03_02_field004\" type=\"text\" size=\"7\" value=\"\"></DIV>";
insertContext[2]="<DIV onclick=\"getRowIndex();\"><input type=\"text\" name=\"sub01_03_02_field005\" size=\"6\" value=\"\"></DIV>";
insertContext[3]="<DIV onclick=\"getRowIndex();\"><input type=\"text\" name=\"sub01_03_02_field006\" size=\"18\" value=\"\"></DIV>";
insertContext[4]="<DIV onclick=\"getRowIndex();\"><input name=\"sub01_02_field007\" type=\"text\" size=\"24\" value=\"\"></DIV>";
insertContext[5]="<DIV onclick=\"getRowIndex();\"><input type=\"text\" name=\"sub01_03_02_field008\" size=\"11\" value=\"\"></DIV>";
//显示菜单内容
var linkset=new Array()
//一般情况
if(modeLayer=="1"){
linkset[0]="<div class='menuitems'><a href='javascript:insertTable(\"stockman\",insertContext,document.all.sub01_03_02_field003)'>添 加</a></div>"
linkset[0]+="<div class='menuitems'><a href='javascript:deleteRow(\"stockman\",3)'>删 除</a></div>"
}
showMenuLayer(event,linkset[0]);
}
函数的使用说明:
showmenu函数的参数为1,就是显示的菜单。
insertContext数组就是,要添加表格行变量的列项目。
菜单中的说明:
添加:linkset[0]中的insertTable(\"stockman\",insertContext,document.all.sub01_03_02_field003)中的stockman为表格的ID,insertContext为列的变量列表,document.all.sub01_03_02_field003是隐藏变量程序将对他进行初始化自动加1。
删除:linkset[0]中的deleteRow(\"stockman\",3) 中的stockman为表格的ID,3是表格所在变量第一行的行号。
*/
////层的显示模块 start
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers
function showMenuLayer(e,which){
if (!document.all&&!document.getElementById&&!document.layers)
return
clearhidemenu()
menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""
menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj
if (ie4||ns6)
menuobj.innerHTML=which
else{
menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=80 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')
menuobj.document.close()
}
menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width
menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height
eventX=ie4? event.clientX : ns6? e.clientX : e.x
eventY=ie4? event.clientY : ns6? e.clientY : e.y
//Find out how close the mouse is to the corner of the window
var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY
//if the horizontal distance isn't enough to accomodate the width of the context menu
if (rightedge<menuobj.contentwidth)
//move the horizontal position of the menu to the left by it's width
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
else
//position the horizontal position of the menu where the mouse was clicked
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX : ns6? window.pageXOffset+eventX : eventX
//same concept with the vertical position
if (bottomedge<menuobj.contentheight)
menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight : ns6? window.pageYOffset+eventY-menuobj.contentheight : eventY-menuobj.contentheight
else
menuobj.thestyle.top=ie4? document.body.scrollTop+event.clientY : ns6? window.pageYOffset+eventY : eventY
menuobj.thestyle.visibility="visible"
return false
}
function contains_ns6(a, b) {
//Determines if 1 element in contained in another- by Brainjar.com
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}
function hidemenu(){
if (window.menuobj)
menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"
}
function dynamichide(e){
if (ie4&&!menuobj.contains(e.toElement))
hidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
hidemenu()
}
function delayhidemenu(){
if (ie4||ns6||ns4)
delayhide=setTimeout("hidemenu()",500)
}
function clearhidemenu(){
if (window.delayhide)
clearTimeout(delayhide)
}
function highlightmenu(e,state){
if (document.all)
source_el=event.srcElement
else if (document.getElementById)
source_el=e.target
if (source_el.className=="menuitems"){
source_el.id=(state=="on")? "mouseoverstyle" : ""
}
else{
while(source_el.id!="popmenu"){
source_el=document.getElementById? source_el.parentNode : source_el.parentElement
if (source_el.className=="menuitems"){
source_el.id=(state=="on")? "mouseoverstyle" : ""
}
}
}
}
if (ie4||ns6)
document.onclick=hidemenu
////层的显示模块 end
//table editor start
//tableID table's id
//insertContext 需要添加的行的innerHTML
//recordNum 用于存放记录号的隐藏输入域对象(一般为field003)
//maxNum 数据库中当前表的最大记录号值(包括所有变更的)
//nCell recordNum所在列(TD)的顺序号,从0开始计算
//nOrder recordNum在所在列(TD)中排列的顺序号,从0开始计算,与children
//checkCell //check所在列(TD)的顺序号,从0开始计算//...2004-03-29 add
//checkOrder//check在所在列(TD)中排列的顺序号,从0开始计算,与children//...2004-03-29 add
//function insertTable(tableID,insertContext,recordNum,maxNum,nCell,nOrder) {//...2004-03-29 comment
function insertTable(tableID,insertContext,recordNum,maxNum,nCell,nOrder,checkCell,checkOrder) {//...2004-03-29 add
var otd,i;
var rowT=document.all(tableID);
//插入行
//所有行均在最后加入
var otr = rowT.insertRow(-1);
//插入列
for(i=0;i<insertContext.length;i++){
otd = otr.insertCell();
otd.className="formTd01";
otd.innerHTML=insertContext[i];
//alert(otd.innerHTML);
}
//设置插入行的记录号(recordNum)的值
var maxRecordNumber=maxNum;
if(recordNum){
if(recordNum && recordNum.length){
for(i=0;i<recordNum.length;i++){
if ((recordNum[i].value != "") && (parseInt(Math.abs(recordNum[i].value)) > maxRecordNumber)){
maxRecordNumber = parseInt(Math.abs(recordNum[i].value));
}
}//for
}else{
if (recordNum){
if (parseInt(recordNum.value) > maxRecordNumber ){
maxRecordNumber =parseInt(recordNum.value);
}
}else{
maxRecordNumber=0;
}
}//else
}//if
maxRecordNumber ++;
//alert("name" + otr.cells[nCell].children[nOrder].name);
otr.cells[nCell].children[nOrder].value = (maxRecordNumber<10?"0"+maxRecordNumber:maxRecordNumber);
otr.cells[checkCell].children[checkOrder].value = (maxRecordNumber<10?"0"+maxRecordNumber:maxRecordNumber);//...2004-03-26 add
//alert("maxRecordNumber:" + maxRecordNumber);
//alert("insertTD:"+otr.innerHTML);
}
//用于变更(子表操作)
//nCell 数据操作标志field249所在列(TD)的顺序号,从0开始计算
//nOrder 数据操作标志field249在所在列(TD)中排列的顺序号,从0开始计算,与children
//delCells //check所在列(TD)的顺序号,从0开始计算//...2004-03-29 add
//delChildren//check在所在列(TD)中排列的顺序号,从0开始计算,与children//...2004-03-29 add
//function changeDeleteRow(stockman,stockmanStartNum,nCell,nOrder,delCells,delChildren) //删除选中的表行,tablename是表格的id//...2004-03-29 comment
function changeDeleteRow(stockman,stockmanStartNum,nCell,nOrder,delCells,delChildren) //删除选中的表行,tablename是表格的id//...2004-03-29 add
{
var rowT=document.all(stockman);
for(i=stockmanStartNum;i<rowT.rows.length;i++) {
var sFlag = "";
if(rowT.rows[i].cells[0].children[0].checked == true){
//alert("children:" + rowT.rows[i].cells[6].children.length);
if (rowT.rows[i].cells[nCell].children[nOrder]){
//alert("rowT.rows[i].cells[nCell].children[nOrder].name:::"+rowT.rows[i].cells[nCell].children[nOrder].name);
sFlag = rowT.rows[i].cells[nCell].children[nOrder].value;
}
//alert(stockmanStartNum+" "+i+" "+rowT.rows[i].innerHTML);
//alert("sFlag's value:"+sFlag);
if (sFlag == "old"){
//alert("hidden");
rowT.rows[i].style.display="none";
//alert("rowT.rows[i].cells[6].children[0].name"+rowT.rows[i].cells[4].children[0].name);
//alert("rowT.rows[i].cells[6].children[1].name"+rowT.rows[i].cells[4].children[1].name);
//alert("rowT.rows[i].cells[6].children[2].name"+rowT.rows[i].cells[4].children[2].name);
//alert("rowT.rows[i].cells[6].children[3].name"+rowT.rows[i].cells[4].children[3].name);
rowT.rows[i].cells[delCells].children[delChildren].value = "del"//...2004-03-29 add
}else{
//alert("delete");
rowT.deleteRow(i);
i = i-1
}
}
}
}
//用于变更(子表操作)
//显示被删除且被隐藏的TD
function showDeleteRow(stockman,stockmanStartNum)
{
var rowT=document.all(stockman);
for(i=stockmanStartNum;i<rowT.rows.length;i++) {
rowT.rows[i].style.display="";
}
}
//table editor end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -