?? alai_tc.js
字號:
/*******************************************************************************
阿賴網頁表格控件程序 由賴國欣設計于2003年3月-6月,保留所有權利!
*********************************************************************************/
function alai_tc(tbl,caption,dataType,tcStyle,tblStyle,rowStyle,colStyle)
{
try{
var tc=this;
tc.err="";
tc.col=[];
tc.tbl=tbl;
tc.copywrite="Copywrite by Alai(賴國欣) (c)2003,All right reserved!"
if(!document.getElementById){throw new Error(999,"Your browser dosen't support Alai_tc function,IE5.0+ is recommended.");}
tc.ctr=document.createElement("table");
tc.extConvert=new Function();
tc.setCaption=function(c)
{
var c=c==null?[]:c.split("|");
for(var i=0;i<tc.col.length;i++){tc.col[i].innerHTML=c[i]==null?" ":c[i];}
}
tc.setDataType=function(dataType)
{
var dt=dataType==null?[]:dataType.split("|");
for(var i=0;i<tc.col.length;i++)
{
dType[i]=dt[i]==null?"char":dt[i];
if(dType[i].toUpperCase()=="CNPY")load_js("pingying.js");
else if(dType[i].toUpperCase()=="CNBH")load_js("bihua.js");
}
tc.dType=dType;
}
tc.setTcStyle=function(style)
{
var defCss="border:1 outset;height:21;text-align:center;white-space:nowrap;overflow:hidden;";
tcStyle=style==null?"":style;
for(var i=0;i<tc.col.length;i++)tc.col[i].style.cssText=defCss+tcStyle;
}
tc.setTblStyle=function(style){if(style!=null){tc.tbl.style.cssText=style;tblStyle=style;}}
tc.setRowStyle=function(style)
{
if(style==null)style=rowStyle
if(style!=null)
{
var s=style.split("|");
var m=0;
for(var i=0;i<tr.length;i++)
{
var td=tr[i].cells
for(var j=0;j<td.length;j++)td[j].style.cssText+=";"+s[m];
m=(m>=s.length-1)?0:++m;
}
rowStyle=style;
}
setSelStyle()
}
tc.setColStyle=function(style)
{
if(style==null)style=colStyle
if(style==null){return;}
var s=style.split("|");
for(var i=0;i<tr.length;i++)
{
var m=0;
var td=tr[i].cells
for(var j=0;j<td.length;j++)
{
td[j].style.cssText+=";"+s[m];
m=(m>=s.length-1)?0:++m;
}
}
colStyle=style;
}
var dType=[];
var sortBy=[];
var tdLocate
var selTr=[]
var selFC,selBC
var jsPath=""
var setSelStyle=function()
{
for(var i=0;i<selTr.length;i++)
{ var td=selTr[i].cells
for(var j=0;j<td.length;j++)
{
td[j].style.color=selFC
td[j].style.backgroundColor=selBC
}
}
if(tdLocate!=null)
{
var c=tdLocate.currentStyle.color
tdLocate.style.color=tdLocate.currentStyle.backgroundColor
tdLocate.style.backgroundColor=c
}
}
var tblSort=function(tbl,colIndex,By,DataType)
{
var convert=function(Data,Type)
{ var Rst=Data;
var cn_code=function(idx)
{ if (idx<100){return String.fromCharCode(0,idx);}
else{var s=idx.toString();return String.fromCharCode(parseInt(s.substring(0,s.length-2)),idx%100);}
}
switch(Type.toUpperCase())
{ case "CHAR": Rst=Data;break;
case "NUM": Rst=parseFloat(Data);if(isNaN(Rst))Rst=Data;break;
case "DATE": Rst=Date.parse(Data);if(isNaN(Rst))Rst=Data;break;
case "CNPY":
if(typeof(strChinesePingYing)=="undefined"){return Data;}
Rst="";
for(var i=0;i<Data.length;i++){var idx=strChinesePingYing.indexOf(Data.charAt(i));Rst+=idx!=-1?cn_code(idx):Data.charAt(i);}
break;
case "CNBH":
if(typeof(strChineseBiHua)=="undefined"){return Data;}
Rst="";
for(var i=0;i<Data.length;i++){var idx=strChineseBiHua.indexOf(Data.charAt(i));Rst+=idx!=-1?cn_code(idx):Data.charAt(i);}
break;
default : Rst=tc.extConvert(Data,Type);if(Rst==null){Rst=Data};
}
return Rst;
}
var ByAsc=(By=="ASC")
var arySort=[]
for(var i=0;i<tbl.rows.length;i++)
{
var Data=(tbl.rows[i].cells[colIndex])?(tbl.rows[i].cells[colIndex].innerText.toLowerCase()):null;
Data=convert(Data,DataType);
arySort[i]=new Array(Data,tbl.rows[i]);
}
arySort.sort(function(){var a=arguments;return ByAsc?(a[0][0]>a[1][0]?1:(a[0][0]<a[1][0]?-1:0)):(a[0][0]<a[1][0]?1:(a[0][0]>a[1][0]?-1:0));})
for(i=0;i<arySort.length;i++){tbl.lastChild.appendChild(arySort[i][1]);}
}
var load_js=function (src)
{
var script=document.getElementsByTagName("SCRIPT");
for(var i=0;i<script.length;i++)
{
var s=script[i].src.toLowerCase()
if(s==src.toLowerCase())return;
if(s.indexOf("alai_tc.js")!=-1){jsPath=s.replace("alai_tc.js","")}
}
document.write('<script src="'+jsPath+src+'"></script>');
}
Array.prototype.remove=function(index){if(index<0 || index>=this.length)return;for(var i=index;i<this.length;i++)this[i]=this[i+1];this.length--;}
Array.prototype.indexOf=function(elm){for(var i=0;i<this.length;i++)if(elm==this[i])return i;return -1;}
if(tbl==null){throw new Error(999,"Miss table object.The first argument is required!");}
else if(!isNaN(parseInt(tbl)))
{ var i=parseInt(tbl);
var tbls=document.all.tags("table");
if(tbls.length>i){tc.tbl=tbls[i];}
else{throw new Error(999,"Table index value out of range.");}
}else if(typeof(tbl)!="object" || tbl.tagName!="TABLE"){throw new Error(999,"The first argument isn't a table object.");}
tbl=tc.tbl
var tr=tbl.rows
tc.tbl.insertAdjacentElement("beforeBegin",tc.ctr)
tc.tbl.style.marginTop=0
with(tc.ctr)
{ style.cssText="border:0;font-size:9pt;color:black;margin:0;padding:0;border-collapse:collapse;background-color:buttonface;table-layout:fixed;"
//style.pixelWidth=tc.tbl.offsetWidth
setAttribute("width",tc.tbl.currentStyle.width)
cellPadding=0
cellSpacing=0
var row=insertRow()
}
for(var i=0;i<tr[0].cells.length;i++)
{
tc.col[i]=row.insertCell();
with(tc.col[i])
{
setAttribute("width",tr[0].cells[i].offsetWidth);
sortBy[i]="DESC";
onclick=function()
{ var idx=this.cellIndex
tblSort(tc.tbl,idx,sortBy[idx],dType[idx]);
sortBy[idx]=(sortBy[idx]=="ASC")?"DESC":"ASC";
tc.setRowStyle(rowStyle);
tr=tc.tbl.rows
}
onmousedown=function(){this.style.borderStyle="inset";}
onmouseup=function(){this.style.borderStyle="outset";}
onmousemove=function(){this.style.cursor="default"}
}}
tc.setCaption(caption);
tc.setDataType(dataType);
tc.setTcStyle(tcStyle);
tc.setTblStyle(tblStyle);
tc.setColStyle(colStyle);
tc.setRowStyle(rowStyle);
tc.selectOne=function(bColor,fColor)
{
tc.selRow=null;
tc.selData=[];
selFC=fColor==null?"white":fColor
selBC=bColor==null?"darkblue":bColor
tc.tbl.onclick=function()
{
e=event.srcElement;
if(e==this){return;}
while(e.tagName!="TR"){e=e.parentElement;}
tc.selRow=e;
var td=e.cells;
for(var i=0;i<td.length;i++)tc.selData[i]=td[i].innerText;
selTr[0]=tc.selRow
tc.setColStyle(colStyle);
tc.setRowStyle(rowStyle);
}
}
tc.multiSelect=function(bColor,fColor)
{
tc.selRow=[];
tc.selData=[];
selFC=fColor==null?"white":fColor
selBC=bColor==null?"darkblue":bColor
tc.tbl.onclick=function()
{
e=event.srcElement;
if(e==this){return;}
while(e.tagName!="TR"){e=e.parentElement;}
var i=tc.selRow.indexOf(e);
if(i==-1)tc.selRow[tc.selRow.length]=e;
else tc.selRow.remove(i);
tc.selData=[];
for(var i=0;i<tc.selRow.length;i++)
{
tc.selData[i]=[];
for(var j=0;j<tc.selRow[i].cells.length;j++)tc.selData[i][j]=tc.selRow[i].cells[j].innerText;
}
selTr=tc.selRow
tc.setColStyle(colStyle);
tc.setRowStyle(rowStyle);
}
}
tc.mouseOver=function(bColor,fColor)
{
var curRow=null;
var fc=fColor==null?"darkblue":fColor
var bc=bColor==null?"FFFF66":bColor
var rowfc=[],rowbc=[]
function overRow(tr)
{
if(curRow!=null)
{
var td=curRow.cells
for(var i=0;i<td.length;i++)
{
td[i].style.color=rowfc[i]
td[i].style.backgroundColor=rowbc[i]
}
}
var td=tr.cells
for(var i=0;i<td.length;i++)
{
rowfc[i]=td[i].currentStyle.color
rowbc[i]=td[i].currentStyle.backgroundColor
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -