無限層樹狀,無數的版本,我也蹭蹭熱鬧,裡面的圖片自己搞定(18X18的gif,合攏.BigHe.gif,打開.BigKai.gif,明細(沒子目錄)details.gif)<Script Language="JavaScript">
//Name﹕無限層樹狀
//Design:LiuZXIT
//OverTime:2003/3/19
//Note:在IE5.i上測試通過var strStyle='<style type="text/css">'
strStyle+='span.SelectIng{color:#ff00ff;border:solid 1pt #666666;padding:0.5pt;height:4px;background-color:#cccccc;}'
strStyle+='span.NoSelect{color:#000084;border:solid 1pt #ffffff;padding:0.5pt;height:4px;background-color:#ffffff;}'
strStyle+='span.SelectEd{color:#D02090;border:solid 1pt #888888;padding:0.5pt;height:4px;background-color:#f3f3f3;}'
strStyle+='</style>'
document.write(strStyle)var imgOpen='bigkai.gif',imgClose='bighe.gif',imgDetail='details.gif';
var myRs=new Array(), selectItem;
function compare(a,b) {return parseInt(a[1]) - parseInt(b[1])}
function InsertItem(s){myRs[myRs.length++] = s.split(/,/);}function iniImages(asImgOpen,asImgClose,asImgDetail){ //初始化圖片文件名
if(asImgOpen != null)imgOpen=asImgOpen;
if(asImgClose != null)imgClose=asImgClose;
if(asImgDetail != null)imgDetail=asImgDetail;
}function ExCloAll(n){
var d=document.all('0'), e=d.all.tags('div')
for (i=0;i<e.length;i++)e[i].style.display=(n==1?'block':'none')
e=d.all.tags('p')
for (i=0;i<e.length;i++){if(ChkExist(e[i].children[1].value))e[i].children[0].src=(n==1?imgOpen:imgClose)}
}function ExCloItem(){ //點擊文字時觸發
var c,e=event.srcElement, p=e.parentElement.children
if(e.myHref!=null){
alert((e.myTarget!=null?e.myTarget:'window')+'.location='+e.myHref) //要改成連接到某頁只需把alert改成eval即可
}
else{window.status='no href'};
if(selectItem!=null)selectItem.className='NoSelect';
e.className='SelectEd'
selectItem=event.srcElement;
c=document.all(e.value)
if(c.tagName=='P')return
p[0].src=(p[0].src.indexOf(imgClose)==-1?imgClose:imgOpen)
c.style.display=(c.style.display=='none'?'block':'none')
}function ExCloItem2(){ //點擊圖片時觸發
var c,e=event.srcElement, p=e.parentElement.children
if(c=document.all(p[1].value)){
if(e.src.indexOf(imgDetail)==-1)e.src=(e.src.indexOf(imgClose)==-1?imgClose:imgOpen)
if(e.parentElement.id==null || e.parentElement.id=="")c.style.display=(c.style.display=='block'?'none':'block')
}else{if(e.src.indexOf(imgDetail)==-1)e.src=imgClose;}
}function OutItem(){
var e=event.srcElement
if(selectItem != '')e.className=(selectItem==e?'SelectEd':'NoSelect')
else e.className='NoSelect'
}function ChkExist(n){
n=parseInt(n)
if((n<myRs[0][1])||(n>myRs[myRs.length-1][1]))return false
var a,b,c,x=0, y=parseInt(myRs.length/2), z=myRs.length-1
while((x!=y)&&(y!=z)){
a=myRs[x][1], b=myRs[y][1], c=myRs[z][1]
if(n==a||n==b||n==c)return true
if(n>b)x=y;
else z=y;y=parseInt(x+z);
y=parseInt((x+z)/2);
}
return false
}function getParent(n){
var strRs= "",k=0;
for (var i=0; i < myRs.length; i++) strRs += ";"+myRs[i].join(",");
k=strRs.indexOf(n);
if(k==-1)return -1
strRs=strRs.substring(k + n.length + 1);
strRs=strRs.substring(0,strRs.indexOf(','));
return strRs
}function addItem(s){
if(s==null)return;
var arrItem = s.split(/,/),objParent,strHtml="",strP,arrRs=new Array();
if(document.all(arrItem[0])!=null){
alert('相同ID節點已存在,無法加入')
return false
}
if(document.all(arrItem[1])==null){
alert('指定ID節點不存在,無法加入')
return false
}
objParent=document.all(arrItem[1]);
if(!ChkExist(arrItem[1])){ //如果指向的是一個detail
for (var i=0; i < myRs.length; i++){
if(eval('/^'+arrItem[0]+',/').test(myRs[i].join(","))){
arrRs=myRs[i];
break;
}
}
strHtml+='<div id="'+arrItem[1]+'" style="font:10pt;cursor:hand;position:relative;left:20;display:block;">';
strHtml+='<p id="'+arrItem[0]+'" style="margin:0pt;"><img style="vertical-align:top;" onclick="ExCloItem2()" src="'+imgDetail+'"><span onclick="ExCloItem()"'+(arrItem.length>3?' myHref="'+arrItem[3]+'"':'')+(arrItem.length>4?' myTarget="' + arrItem[4]+'"':'') +' value="'+arrItem[0]+'" class="NoSelect" onmouseout="OutItem()" onmouseover="this.className=\'SelectIng\'">'+arrItem[2]+'</span></p></div>'
objParent.children[0].src=imgOpen;
objParent.id=null;
objParent.outerHTML+=strHtml;
}else{ //指向的是一個文件夾
strHtml+='<p id="'+arrItem[0]+'" style="margin:0pt;"><img style="vertical-align:top;" onclick="ExCloItem2()" src="'+imgDetail+'"><span onclick="ExCloItem()"'+(arrItem.length>3?' myHref="'+arrItem[3]+'"':'')+(arrItem.length>4?' myTarget="' + arrItem[4]+'"':'') +' value="'+arrItem[0]+'" class="NoSelect" onmouseout="OutItem()" onmouseover="this.className=\'SelectIng\'">'+arrItem[2]+'</span></p>'
objParent.innerHTML+=strHtml;
}
objParent=document.all(arrItem[1]);
myRs[myRs.length++] = arrItem;
myRs.sort(compare);
arrItem=null;
}function deleteItem(){
if(selectItem==null)return false;
n=parseInt(selectItem.value)
var a,b,c,x=0, y=parseInt(myRs.length/2), z=myRs.length-1
while((x!=y)&&(y!=z)){
a=myRs[x][1], b=myRs[y][1], c=myRs[z][1]
if(n==a){myRs=myRs.slice(0,x).concat(myRs.slice(x+1));break;}
if(n==b){myRs=myRs.slice(0,y).concat(myRs.slice(y+1));break;}
if(n==c){myRs=myRs.slice(0,z).concat(myRs.slice(z+1));break;}
if(n>b)x=y;
else z=y;y=parseInt(x+z);
y=parseInt((x+z)/2);
} var objSon=document.all(selectItem.value);
var objP=selectItem.parentElement;
var objDiv=objP.parentElement;
if(objSon.tagName=="DIV")objSon.outerHTML='';
objP.outerHTML='';
if(objDiv.innerHTML==''){
var arrChild=objDiv.parentElement.children;
for(var i=0;i<arrChild.length;i++){
if(arrChild[i]==objDiv){
var strId=objDiv.id;
objDiv.id='';
arrChild[i-1].id=strId;
arrChild[i-1].children[0].src=imgDetail; //如果不想改變文件夾的圖標可注解掉即可
break;
}
}
objDiv.outerHTML='';
}
selectItem=null;
}function drawTree(n){
if(n==0){
myRs.sort(compare)
document.write('<p style="font:10pt;cursor:hand;"><span onclick="ExCloAll(1)">全部展開</span> <span onclick="ExCloAll(0)">全部合攏</span></p>')
}
if (ChkExist(n)!=true)return
document.write('<div id="'+n+'" style="font:10pt;cursor:hand;'+(n!=0?'position:relative;left:20;display:none;':'')+'">')
for(var i=0;i<myRs.length;i++){
if (parseInt(myRs[i][1])>n)break;
if (myRs[i][1]==n){
document.write('<p style="margin:0pt;"'+(ChkExist(myRs[i][0])?'':' id="'+myRs[i][0]+'"')+'><img style="vertical-align:top;" onclick="ExCloItem2()" src="'+(ChkExist(myRs[i][0])?imgClose:imgDetail)+'">')
document.write('<span onclick="ExCloItem()"'+(myRs[i].length>3?' myHref="'+myRs[i][3]+'"':'')+(myRs[i].length>4?' myTarget="' + myRs[i][4]+'"':'') +'" value="'+myRs[i][0]+'" class="NoSelect" onmouseout="OutItem()" onmouseover="this.className=\'SelectIng\'">'+myRs[i][2]+'</span></p>')
drawTree(myRs[i][0])
}
}
document.write('</div>')
}iniImages('bigkai.gif','bighe.gif');
InsertItem('1,0,根目錄1')
InsertItem('11,1,子目錄1')
InsertItem('111,11,孫目錄1,b.htm,parent.frmMain')
InsertItem('1111,111,曾孫目錄,c.htm,top')
InsertItem('11111,1111,玄孫目錄,d.htm,window')
InsertItem('12,1,子目錄2')
InsertItem('2,0,根目錄2')
InsertItem('21,2,子目錄A,d.htm')
InsertItem('22,2,子目錄B')
InsertItem('3,0,根目錄3')
drawTree(0)
</Script>
<input type="button" value="addItem" onclick="addItem('121,12,孫目錄B')">
<input type="button" value="addItem" onclick="addItem('122,12,孫目錄C')">
<input type="button" value="addItem" onclick="addItem('1211,121,曾孫目錄1')">
<input type="button" value="deleteItem" onclick="deleteItem()">
//Name﹕無限層樹狀
//Design:LiuZXIT
//OverTime:2003/3/19
//Note:在IE5.i上測試通過var strStyle='<style type="text/css">'
strStyle+='span.SelectIng{color:#ff00ff;border:solid 1pt #666666;padding:0.5pt;height:4px;background-color:#cccccc;}'
strStyle+='span.NoSelect{color:#000084;border:solid 1pt #ffffff;padding:0.5pt;height:4px;background-color:#ffffff;}'
strStyle+='span.SelectEd{color:#D02090;border:solid 1pt #888888;padding:0.5pt;height:4px;background-color:#f3f3f3;}'
strStyle+='</style>'
document.write(strStyle)var imgOpen='bigkai.gif',imgClose='bighe.gif',imgDetail='details.gif';
var myRs=new Array(), selectItem;
function compare(a,b) {return parseInt(a[1]) - parseInt(b[1])}
function InsertItem(s){myRs[myRs.length++] = s.split(/,/);}function iniImages(asImgOpen,asImgClose,asImgDetail){ //初始化圖片文件名
if(asImgOpen != null)imgOpen=asImgOpen;
if(asImgClose != null)imgClose=asImgClose;
if(asImgDetail != null)imgDetail=asImgDetail;
}function ExCloAll(n){
var d=document.all('0'), e=d.all.tags('div')
for (i=0;i<e.length;i++)e[i].style.display=(n==1?'block':'none')
e=d.all.tags('p')
for (i=0;i<e.length;i++){if(ChkExist(e[i].children[1].value))e[i].children[0].src=(n==1?imgOpen:imgClose)}
}function ExCloItem(){ //點擊文字時觸發
var c,e=event.srcElement, p=e.parentElement.children
if(e.myHref!=null){
alert((e.myTarget!=null?e.myTarget:'window')+'.location='+e.myHref) //要改成連接到某頁只需把alert改成eval即可
}
else{window.status='no href'};
if(selectItem!=null)selectItem.className='NoSelect';
e.className='SelectEd'
selectItem=event.srcElement;
c=document.all(e.value)
if(c.tagName=='P')return
p[0].src=(p[0].src.indexOf(imgClose)==-1?imgClose:imgOpen)
c.style.display=(c.style.display=='none'?'block':'none')
}function ExCloItem2(){ //點擊圖片時觸發
var c,e=event.srcElement, p=e.parentElement.children
if(c=document.all(p[1].value)){
if(e.src.indexOf(imgDetail)==-1)e.src=(e.src.indexOf(imgClose)==-1?imgClose:imgOpen)
if(e.parentElement.id==null || e.parentElement.id=="")c.style.display=(c.style.display=='block'?'none':'block')
}else{if(e.src.indexOf(imgDetail)==-1)e.src=imgClose;}
}function OutItem(){
var e=event.srcElement
if(selectItem != '')e.className=(selectItem==e?'SelectEd':'NoSelect')
else e.className='NoSelect'
}function ChkExist(n){
n=parseInt(n)
if((n<myRs[0][1])||(n>myRs[myRs.length-1][1]))return false
var a,b,c,x=0, y=parseInt(myRs.length/2), z=myRs.length-1
while((x!=y)&&(y!=z)){
a=myRs[x][1], b=myRs[y][1], c=myRs[z][1]
if(n==a||n==b||n==c)return true
if(n>b)x=y;
else z=y;y=parseInt(x+z);
y=parseInt((x+z)/2);
}
return false
}function getParent(n){
var strRs= "",k=0;
for (var i=0; i < myRs.length; i++) strRs += ";"+myRs[i].join(",");
k=strRs.indexOf(n);
if(k==-1)return -1
strRs=strRs.substring(k + n.length + 1);
strRs=strRs.substring(0,strRs.indexOf(','));
return strRs
}function addItem(s){
if(s==null)return;
var arrItem = s.split(/,/),objParent,strHtml="",strP,arrRs=new Array();
if(document.all(arrItem[0])!=null){
alert('相同ID節點已存在,無法加入')
return false
}
if(document.all(arrItem[1])==null){
alert('指定ID節點不存在,無法加入')
return false
}
objParent=document.all(arrItem[1]);
if(!ChkExist(arrItem[1])){ //如果指向的是一個detail
for (var i=0; i < myRs.length; i++){
if(eval('/^'+arrItem[0]+',/').test(myRs[i].join(","))){
arrRs=myRs[i];
break;
}
}
strHtml+='<div id="'+arrItem[1]+'" style="font:10pt;cursor:hand;position:relative;left:20;display:block;">';
strHtml+='<p id="'+arrItem[0]+'" style="margin:0pt;"><img style="vertical-align:top;" onclick="ExCloItem2()" src="'+imgDetail+'"><span onclick="ExCloItem()"'+(arrItem.length>3?' myHref="'+arrItem[3]+'"':'')+(arrItem.length>4?' myTarget="' + arrItem[4]+'"':'') +' value="'+arrItem[0]+'" class="NoSelect" onmouseout="OutItem()" onmouseover="this.className=\'SelectIng\'">'+arrItem[2]+'</span></p></div>'
objParent.children[0].src=imgOpen;
objParent.id=null;
objParent.outerHTML+=strHtml;
}else{ //指向的是一個文件夾
strHtml+='<p id="'+arrItem[0]+'" style="margin:0pt;"><img style="vertical-align:top;" onclick="ExCloItem2()" src="'+imgDetail+'"><span onclick="ExCloItem()"'+(arrItem.length>3?' myHref="'+arrItem[3]+'"':'')+(arrItem.length>4?' myTarget="' + arrItem[4]+'"':'') +' value="'+arrItem[0]+'" class="NoSelect" onmouseout="OutItem()" onmouseover="this.className=\'SelectIng\'">'+arrItem[2]+'</span></p>'
objParent.innerHTML+=strHtml;
}
objParent=document.all(arrItem[1]);
myRs[myRs.length++] = arrItem;
myRs.sort(compare);
arrItem=null;
}function deleteItem(){
if(selectItem==null)return false;
n=parseInt(selectItem.value)
var a,b,c,x=0, y=parseInt(myRs.length/2), z=myRs.length-1
while((x!=y)&&(y!=z)){
a=myRs[x][1], b=myRs[y][1], c=myRs[z][1]
if(n==a){myRs=myRs.slice(0,x).concat(myRs.slice(x+1));break;}
if(n==b){myRs=myRs.slice(0,y).concat(myRs.slice(y+1));break;}
if(n==c){myRs=myRs.slice(0,z).concat(myRs.slice(z+1));break;}
if(n>b)x=y;
else z=y;y=parseInt(x+z);
y=parseInt((x+z)/2);
} var objSon=document.all(selectItem.value);
var objP=selectItem.parentElement;
var objDiv=objP.parentElement;
if(objSon.tagName=="DIV")objSon.outerHTML='';
objP.outerHTML='';
if(objDiv.innerHTML==''){
var arrChild=objDiv.parentElement.children;
for(var i=0;i<arrChild.length;i++){
if(arrChild[i]==objDiv){
var strId=objDiv.id;
objDiv.id='';
arrChild[i-1].id=strId;
arrChild[i-1].children[0].src=imgDetail; //如果不想改變文件夾的圖標可注解掉即可
break;
}
}
objDiv.outerHTML='';
}
selectItem=null;
}function drawTree(n){
if(n==0){
myRs.sort(compare)
document.write('<p style="font:10pt;cursor:hand;"><span onclick="ExCloAll(1)">全部展開</span> <span onclick="ExCloAll(0)">全部合攏</span></p>')
}
if (ChkExist(n)!=true)return
document.write('<div id="'+n+'" style="font:10pt;cursor:hand;'+(n!=0?'position:relative;left:20;display:none;':'')+'">')
for(var i=0;i<myRs.length;i++){
if (parseInt(myRs[i][1])>n)break;
if (myRs[i][1]==n){
document.write('<p style="margin:0pt;"'+(ChkExist(myRs[i][0])?'':' id="'+myRs[i][0]+'"')+'><img style="vertical-align:top;" onclick="ExCloItem2()" src="'+(ChkExist(myRs[i][0])?imgClose:imgDetail)+'">')
document.write('<span onclick="ExCloItem()"'+(myRs[i].length>3?' myHref="'+myRs[i][3]+'"':'')+(myRs[i].length>4?' myTarget="' + myRs[i][4]+'"':'') +'" value="'+myRs[i][0]+'" class="NoSelect" onmouseout="OutItem()" onmouseover="this.className=\'SelectIng\'">'+myRs[i][2]+'</span></p>')
drawTree(myRs[i][0])
}
}
document.write('</div>')
}iniImages('bigkai.gif','bighe.gif');
InsertItem('1,0,根目錄1')
InsertItem('11,1,子目錄1')
InsertItem('111,11,孫目錄1,b.htm,parent.frmMain')
InsertItem('1111,111,曾孫目錄,c.htm,top')
InsertItem('11111,1111,玄孫目錄,d.htm,window')
InsertItem('12,1,子目錄2')
InsertItem('2,0,根目錄2')
InsertItem('21,2,子目錄A,d.htm')
InsertItem('22,2,子目錄B')
InsertItem('3,0,根目錄3')
drawTree(0)
</Script>
<input type="button" value="addItem" onclick="addItem('121,12,孫目錄B')">
<input type="button" value="addItem" onclick="addItem('122,12,孫目錄C')">
<input type="button" value="addItem" onclick="addItem('1211,121,曾孫目錄1')">
<input type="button" value="deleteItem" onclick="deleteItem()">
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=GBK">
<script language="javascript" src="locktable.js"></script>
</head>
<div style="MARGIN: 2pt; OVERFLOW: scroll;width:160px;height:150px;">
<table id="tbl" border=0 cellspacing="1" cellpadding="0" bgcolor=#660000>
<tr><td nowrap bgcolor=#bbbbbb>標題一</td><td nowrap bgcolor=#bbbbbb>標題二</td><td nowrap bgcolor=#bbbbbb>標題三</td><td nowrap bgcolor=#bbbbbb>標題四</td></tr>
<tr><td bgcolor=#bbbbbb>內容A</td><td bgcolor=#ffffff>內容B</td><td bgcolor=#ffffff>內容C</td><td bgcolor=#ffffff>內容D</td></tr>
<tr><td bgcolor=#bbbbbb>內容A</td><td bgcolor=#ffffff>內容B</td><td bgcolor=#ffffff>內容C</td><td bgcolor=#ffffff>內容D</td></tr>
<tr><td bgcolor=#bbbbbb>內容A</td><td bgcolor=#ffffff>內容B</td><td bgcolor=#ffffff>內容C</td><td bgcolor=#ffffff>內容D</td></tr>
<tr><td bgcolor=#bbbbbb>內容A</td><td bgcolor=#ffffff>內容B</td><td bgcolor=#ffffff>內容C</td><td bgcolor=#ffffff>內容D</td></tr>
<tr><td bgcolor=#bbbbbb>內容A</td><td bgcolor=#ffffff>內容B</td><td bgcolor=#ffffff>內容C</td><td bgcolor=#ffffff>內容D</td></tr>
<tr><td bgcolor=#bbbbbb>內容A</td><td bgcolor=#ffffff>內容B</td><td bgcolor=#ffffff>內容C</td><td bgcolor=#ffffff>內容D</td></tr>
<tr><td bgcolor=#bbbbbb>內容A</td><td bgcolor=#ffffff>內容B</td><td bgcolor=#ffffff>內容C</td><td bgcolor=#ffffff>內容D</td></tr>
<tr><td nowrap bgcolor=#bbbbbb>標題一</td><td nowrap bgcolor=#bbbbbb>標題二</td><td nowrap bgcolor=#bbbbbb>標題三</td><td nowrap bgcolor=#bbbbbb>標題四</td></tr>
</table>
</div>
<script language="javascript">
LockTable(tbl,1,1,1);
</script>
===========lockTable.js=================
function DrawTable(scrTable,newTable,iStart,iEnd,jEnd){
var i,j,k=0,newTR,newTD,intWidth=0,intHeight=0;
newTable.mergeAttributes(scrTable);
for (i=iStart;i<iEnd;i++){
newTR=newTable.insertRow(k)
newTR.mergeAttributes(scrTable.rows[i]);
intHeight += scrTable.rows[i].offsetHeight;
intWidth=0;
for(j=0;j<(jEnd==-1?scrTable.rows[i].cells.length:jEnd);j++){
newTD=scrTable.rows[i].cells[j].cloneNode(true);
intWidth+= scrTable.rows[i].cells[j].offsetWidth;
newTR.insertBefore(newTD);
newTD.style.pixelWidth=scrTable.rows[i].cells[j].offsetWidth;
}
k++
}
newTable.style.pixelWidth=intWidth;
newTable.style.pixelHeight=intHeight;
}function LockTable(arTable,ColNum,RowHead,RowFoot){
arTable.HeadRow=RowHead;
var objDivMaster=arTable.parentElement;
if(objDivMaster.tagName!='DIV')return;
if((arTable.offsetHeight > objDivMaster.offsetHeight)&&(arTable.offsetWidth > objDivMaster.offsetWidth)){
if((ColNum > 0) && (RowHead > 0)){
var objTableLH=document.createElement("TABLE");
var newTBody=document.createElement("TBODY");
objTableLH.insertBefore(newTBody);
objTableLH.id="objTableLH";
objDivMaster.parentElement.insertBefore(objTableLH);
DrawTable(arTable,objTableLH,0,RowHead,ColNum)
objTableLH.srcTable=arTable;
with(objTableLH.style){
zIndex=804;
position='absolute'
pixelLeft=objDivMaster.offsetLeft;
pixelTop=objDivMaster.offsetTop;
}
}
if((ColNum > 0) && (RowFoot > 0)){
var objTableLF=document.createElement("TABLE");
var newTBody=document.createElement("TBODY");
objTableLF.insertBefore(newTBody);
objTableLF.id="objTableLF";
objDivMaster.parentElement.insertBefore(objTableLF);
DrawTable(arTable,objTableLF,arTable.rows.length - RowFoot,arTable.rows.length,ColNum)
objTableLF.srcTable=arTable;
with(objTableLF.style){
zIndex=803;
position='absolute'
pixelLeft=objDivMaster.offsetLeft;
pixelTop=objDivMaster.offsetTop + objDivMaster.offsetHeight - objTableLF.offsetHeight - 16;
}
}
} if((RowHead > 0) && (arTable.offsetHeight > objDivMaster.offsetHeight)){
var DivHead=document.createElement("DIV");
objDivMaster.parentElement.insertBefore(DivHead);
var objTableHead=document.createElement("TABLE");
var newTBody=document.createElement("TBODY");
objTableHead.id="HeadTar";
objTableHead.style.position="relative"
objTableHead.insertBefore(newTBody);
DivHead.insertBefore(objTableHead);
DrawTable(arTable,objTableHead,0,RowHead,-1)
HeadTar.srcTable=arTable;
with(DivHead.style){
overflow="hidden";
zIndex=802;
pixelWidth=objDivMaster.offsetWidth - 16
position='absolute';
pixelLeft=objDivMaster.offsetLeft;
pixelTop=objDivMaster.offsetTop;
}
objDivMaster.attachEvent("onscroll",divScroll1);
}
if((RowFoot > 0) && (arTable.offsetHeight > objDivMaster.offsetHeight)){
var DivFoot=document.createElement("DIV");
objDivMaster.parentElement.insertBefore(DivFoot);
var objTableFoot=document.createElement("TABLE");
var newTBody=document.createElement("TBODY");
objTableFoot.insertBefore(newTBody);
objTableFoot.id="FootTar";
objTableFoot.style.position="relative"
DivFoot.insertBefore(objTableFoot);
DrawTable(arTable,objTableFoot,arTable.rows.length - RowFoot,arTable.rows.length,-1)
objTableFoot.srcTable=arTable;
with(DivFoot.style){
overflow="hidden";
zIndex=801;
pixelWidth=objDivMaster.offsetWidth - 16
position='absolute'
pixelLeft=objDivMaster.offsetLeft;
pixelTop=objDivMaster.offsetTop + objDivMaster.offsetHeight - DivFoot.offsetHeight - 16;
}
objDivMaster.attachEvent("onscroll",divScroll2);
}
if((ColNum > 0) && (arTable.offsetWidth > objDivMaster.offsetWidth)){
var DivLeft=document.createElement("DIV");
objDivMaster.parentElement.insertBefore(DivLeft);
var objTableLeft=document.createElement("TABLE");
var newTBody=document.createElement("TBODY");
objTableLeft.insertBefore(newTBody);
objTableLeft.id="LeftTar";
objTableLeft.style.position="relative";
DivLeft.insertBefore(objTableLeft);
DrawTable(arTable,objTableLeft,0,arTable.rows.length,ColNum)
LeftTar.srcTable=arTable;
with(DivLeft.style){
overflow="hidden";
zIndex=800;
pixelWidth=objDivMaster.offsetWidth - 16
pixelHeight=objDivMaster.offsetHeight - 16
position='absolute'
pixelLeft=objDivMaster.offsetLeft;
pixelTop=objDivMaster.offsetTop;
}
objDivMaster.attachEvent("onscroll",divScroll3);
}
}function divScroll1(){
var tbl=document.all('HeadTar').srcTable,parDiv=tbl.parentElement;
while(parDiv.tagName!='DIV')parDiv=parDiv.parentElement;
document.all('HeadTar').style.pixelLeft= -parDiv.scrollLeft;
}function divScroll2(){
var tbl=document.all('FootTar').srcTable,parDiv=tbl.parentElement;
while(parDiv.tagName!='DIV')parDiv=parDiv.parentElement;
document.all('FootTar').style.pixelLeft= -parDiv.scrollLeft;
}function divScroll3(){
var tbl=document.all('LeftTar').srcTable,parDiv=tbl.parentElement;
while(parDiv.tagName!='DIV')parDiv=parDiv.parentElement;
document.all('LeftTar').style.pixelTop= -parDiv.scrollTop;
}
function String.prototype.Trim(){return this.replace(/(^\s*)|(\s*$)/g, "");}
function Number.prototype.RoundNum(n,y){
var num=Math.round(this*Math.pow(10,n))/Math.pow(10,n)
if ((n>0)&&(y=='n')){
num+=''
if((num.indexOf('.')==-1)&&(n>0))num+='.'
for (i=0;i<n;i++)num+='0'
return num.substring(0,num.indexOf('.')+n+1)
}
return num
}function DateAdd(strInterval, NumDay, dtDate) {
var dtTmp = new Date(dtDate);
if (isNaN(dtTmp)) dtTmp = new Date();
switch (strInterval) {
case "s":return new Date(Date.parse(dtTmp) + (1000 * NumDay));
case "n":return new Date(Date.parse(dtTmp) + (60000 * NumDay));
case "h":return new Date(Date.parse(dtTmp) + (3600000 * NumDay));
case "d":return new Date(Date.parse(dtTmp) + (86400000 * NumDay));
case "w":return new Date(Date.parse(dtTmp) + ((86400000 * 7) * NumDay));
case "m":return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + NumDay, dtTmp.getDate());
case "y":return new Date((dtTmp.getFullYear() + NumDay), dtTmp.getMonth(), dtTmp.getDate());
}
}function DateDiff(strInterval, dtStart, dtEnd) {
var dtStart = new Date(dtStart);
if (isNaN(dtStart)) dtStart = new Date();
var dtEnd = new Date(dtEnd);
if (isNaN(dtEnd)) dtEnd = new Date();
switch (strInterval) {
case "s":return parseInt((dtEnd - dtStart) / 1000);
case "n":return parseInt((dtEnd - dtStart) / 60000);
case "h":return parseInt((dtEnd - dtStart) / 3600000);
case "d":return parseInt((dtEnd - dtStart) / 86400000);
case "w":return parseInt((dtEnd - dtStart) / (86400000 * 7));
case "m":return dtEnd.getMonth() - dtStart.getMonth();
case "y":return dtEnd.getFullYear() - dtStart.getFullYear();
}
}function GetMonthDays(strArg){
var dtArg=new Date(strArg);
if (isNaN(dtArg)) dtArg=new Date();
return (new Date(dtArg.getFullYear(),dtArg.getMonth()+1,dtArg.getDate()) - new Date(dtArg.getFullYear(),dtArg.getMonth(),dtArg.getDate()))/86400000
}function a(s){return s.replace(/-(\d)(?=\D|$)/g,"-0$1");}function DtToStr(dtArg){
dtArg=new Date(dtArg)
if(isNaN(dtArg))return '參數不為標准日期'
var strMon='0'+(dtArg.getMonth()+1)
var strDay='0'+dtArg.getDate()
return dtArg.getFullYear()+strMon.substring(strMon.length-2,strMon.length)+strDay.substring(strDay.length-2,strDay.length)
}function StrToDt(strArg){
if (strArg.length!=8)return '參數必須為8碼年月日'
return strArg.substring(0,4)+'/'+(strArg.substring(4,6)*1)+'/'+(strArg.substring(6,8)*1)
}function SumToBig(numArg){
var arBig1='零,壹,貳,參,肆,伍,陸,柒,捌,玖'.split(',')
var arBig2=',拾,佰,仟'.split(',')
var strBig='',a,reg=/(0*$)/
a=numArg.match(reg)
for (i=a[1].length;i<numArg.length;i++){
strBig=arBig1[numArg.substring(numArg.length-i-1,numArg.length-i)*1]+arBig2[(numArg.length-i)%4]+i+strBig
}
return strBig
/* numArg+=''
var i=numArg.length,strBig=arBig1[numArg.substring(i-1,i)],strBit=''
i--
while (i>=0){
strBit=
for (j=0;j<4;j++){
if (numArg.substring(i,i+1)=='0'){
if (numArg.substring(i,i+1)!='0')strBig=arBig1[numArg.substring(i-1,i)*1]
}
else{
strBig=arBig1[numArg.substring(i-1,i)*1]+arBig2[j]+strBig
}
i--
if(i<0)break;
}
}*/
return strBig
}function AddComma(numArg) {
var reg = /(-?\d+)(\d{3})/
numArg+=''
while (reg.test(numArg)) {
numArg=numArg.replace(reg, "$1,$2")
}
return numArg
}
<script language="javascript" src="getYM.js"></script>
<script language="javascript" src="getCale.js"></script>
<input type="text" id="date">
<input type="button" value="click here" onclick="getYM(document.all('date'))">
<input type="text" id="date1">
<input type="button" value="click here" onclick="getDATE(document.all('date1'))">
<br>adgagagafhafhafdgadfgafg<select><option>asdag</option></select>===========getYM.js==========
/*name:獲取年月控件
author:liuzxit
design-date:2002/12/19
note:在IE5.5下測試通過
*/var tarObject
var d=new Date()
sYear=d.getFullYear()
sMonth=d.getMonth() + 1popup = window.createPopup()
popBody = popup.document.body
popBody.style.border="outset 1pt #cccccc"
popBody.style.fontSize = "9pt"
popBody.style.backgroundColor= "#c6c6c6"
popBody.style.cursor="hand"var strPop='<table id="yMonth" author="liuzxit" border="1" bordercolorlight="#0053a6" bordercolordark="#ffffff" cellpadding="1" cellspacing="0" style="font-size:9pt;">'
strPop+='<th width="28" bgcolor="#ff0000" onclick="parent.yearRoll(-4)" style="color:#00ffff;"><<'
strPop+='<th width="28" bgcolor="#000000" style="color:#ffffff" onclick="parent.selectClicked(this)">'+(sYear - 2)
strPop+='<th width="28" bgcolor="#000000" style="color:#ffffff" onclick="parent.selectClicked(this)">'+(sYear - 1)
strPop+='<th width="28" bgcolor="#ffffff" style="color:#ff0000" onclick="parent.selectClicked(this)">'+sYear
strPop+='<th width="28" bgcolor="#000000" style="color:#ffffff" onclick="parent.selectClicked(this)">'+(sYear + 1)
strPop+='<th width="28" bgcolor="#ff0000" onclick="parent.yearRoll(4)" style="color:#00ffff;">>></th>'
strPop+='<tr align="center"><td style="border:solid 1pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">1'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">2'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">3'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">4'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">5'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">6</td></tr>'
strPop+='<tr align="center"><td style="border:solid 1pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">7'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">8'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">9'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">10'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">11'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">12</td></tr>'
strPop+='<tr align="center" bgcolor="#848484" style="color:#ffffff"><td colspan=3 onclick="parent.selectClicked(this)">本年月'
strPop+='<td colspan=3 onclick="parent.hidePop();">關閉</td></tr>'
strPop+='</table>'
popBody.innerHTML=strPopfunction tdMove(e){e.style.border="outset 2pt #ffffff"}
function tdOut(e){e.style.border="solid 2pt #c6c6c6"}
function yearRoll(n){
var e=popup.document.all('yMonth')
e.cells[1].innerText = parseInt(e.cells[1].innerText) + parseInt(n)
e.cells[2].innerText = parseInt(e.cells[2].innerText) + parseInt(n)
e.cells[3].innerText = parseInt(e.cells[3].innerText) + parseInt(n)
e.cells[4].innerText = parseInt(e.cells[4].innerText) + parseInt(n)
var reg=/(\d{4})(\/)(\d{1,2})/
var r=reg.exec(tarObject.value)
tarObject.value=(parseInt(r[1])+n)+'/'+r[3]
}function selectClicked(e){
var p=e.parentElement
switch(p.rowIndex){
case 0:for(var i=1;i<5;i++){
p.cells[i].style.backgroundColor='#000000';
p.cells[i].style.color='#ffffff';
}
e.style.backgroundColor='#ffffff';
e.style.color='#ff0000';
tarObject.value=tarObject.value.replace(/(\d{4})(\/)(\d{1,2})/,e.innerText+'/$3');
break;
case 3:tarObject.value=sYear+'/'+sMonth;
popup.hide();
break;
default:
tarObject.value=tarObject.value.replace(/(\d{4})(\/)(\d{1,2})/,'$1/'+e.innerText);
e.style.border="solid 1pt #c6c6c6"
popup.hide();
break;
}
}function hidePop(){popup.hide()}
function getYM(s){
tarObject=s
if (s.value=='')s.value=sYear+'/'+sMonth
var reg=/(\d{4})(\/)(\d{1,2})/
var r=reg.exec(s.value)
if (r==null){s.value=sYear+'/'+sMonth;
r=reg.exec(s.value)}
var e=popup.document.all('yMonth').rows[0]
for (var i=1;i<5;i++){
if (e.cells[i].style.color=='#ff0000'){
s.value=e.cells[i].innerText+'/'+r[3]
yearRoll(r[1] - e.cells[i].innerText);
break;
}
}
var e=event.srcElement
popup.show(-70,e.clientHeight+5,196,84,e)
}
/*name:萬年歷控件
author:liuzxit
design-date:2002/12/19
note:在IE5.5下測試通過
*/function caleTDMove(e){e.style.borderColor="#ffffff #333333 #333333 #ffffff"}
function caleTDOut(e){e.style.border="solid 1pt #c6c6c6"}
function hideCale(){popCale.hide()}function yearChange(){ //重寫年份的<SELECT>
var e=popCale.document.all('yearSel')
e.options.length=0
for (i=nYear-4;i<parseInt(nYear)+5;i++){
e.options.length++
e.options[e.options.length - 1].value=i
e.options[e.options.length - 1].text=i
}
e.selectedIndex=4
}function CaleClick(e){ //選定某一天時
if(isNaN(parseInt(e.innerText))){ //如果是點擊"今天"而觸發
var d=new Date()
tarObject.value=d.getFullYear()+'/'+(d.getMonth()+1)+'/'+d.getDate()
e.style.borderColor="#848484"
}
else{tarObject.value=nYear+'/'+(parseInt(nMonth)+1)+'/'+e.innerText
e.style.borderColor="#c6c6c6"
}
popCale.hide()
}function changeYM(e,n){ //改變年份或月份﹐或點>>和<<時觸發
if (e.tagName=='SELECT'){
if(e.value.length==4){nYear=e.value;yearChange()}
else{nMonth=e.value}
}
else{nMonth=parseInt(nMonth)+n
switch(nMonth){
case 12:nYear++;nMonth=0;
yearChange()
popCale.document.all('monthSel').selectedIndex=0;break;
case -1:nYear--;nMonth=11;
yearChange()
popCale.document.all('monthSel').selectedIndex=11;break;
default:popCale.document.all('monthSel').selectedIndex=nMonth;break;
}
}
rewriteCale()
}function rewriteCale(){ //重寫日歷
var newTb,newTR,newTD
newTb=popCale.document.all('LiuzxCale').tBodies[0]
for (i=0;i<=newTb.rows.length;i++)newTb.deleteRow(2)
qtyDay=(new Date(nYear,parseInt(nMonth)+1,1) - new Date(nYear,nMonth,1))/24/3600/1000
fDay=1-(new Date(nYear,nMonth,1).getDay())
for (i=0;i<42;i++){
if (i % 7==0)newTR=newTb.insertRow(newTb.rows.length - 2)
newTD=newTR.insertCell()
if (fDay>0 && fDay<=qtyDay)newTD.innerText=fDay
newTD.style.border="solid 1pt #c6c6c6"
newTD.align='center'
newTD.onmouseover=Function("parent.caleTDMove(this)")
newTD.onmouseout=Function("parent.caleTDOut(this)")
newTD.onclick=Function("parent.CaleClick(this)")
fDay++
}
}function isDate(str){ //判斷日期是否是合法的
var reg = /^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g;
var r = reg.exec(str);
if(r==null)return false;
var d = new Date(r[1], r[3]-1,r[5]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
var reg=/(\/|-)(0*)( *)([1-9])/g
var t=str.replace(reg,'$1$4')
if (newStr==t)return true;
return false;
}function getDATE(s){ //設定那個控件加入萬年歷
tarObject=s
if ((s.value!='')&&(isDate(s.value))){ //如果控件原來有日期并且是合法的
var reg=/(\d{4})(\/)(\d{1,2})(\/)(\d{1,2})/
var r=reg.exec(s.value);
nYear=r[1];nMonth=r[3] - 1;
}
else{
var d=new Date()
nYear=d.getFullYear();nMonth=d.getMonth();
}
var e=event.srcElement
popCale.show(-70,e.clientHeight+5,185,172,e)
popCale.document.all('monthSel').selectedIndex=nMonth
yearChange()
rewriteCale()
}//創建萬年歷
popCale = window.createPopup()
CaleBody = popCale.document.body
CaleBody.style.border="outset 1pt #cccccc"
CaleBody.style.fontSize = "9pt"
CaleBody.style.backgroundColor= "#c6c6c6"
CaleBody.style.cursor="hand"var d=new Date()
var nYear=d.getFullYear()
var nMonth=d.getMonth()
var arMonth=new Array('一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月')
var qtyDay=(new Date(nYear,parseInt(nMonth)+1,1) - new Date(nYear,nMonth,1))/24/3600/1000
var strCale='<table bgcolor="#c6c6c6" id="LiuzxCale" author="liuzxit" border="1"'
strCale+=' bordercolorlight="#0053a6" bordercolordark="#ffffff" cellpadding="1"'
strCale+=' cellspacing="0" style="font-size:9pt;height:170;cursor:hand;">'
strCale+='<th bgcolor="#848484" style="color:#00ffff;border:solid 1pt #848484"'
strCale+=' onclick="parent.changeYM(this,-1)"><<'
strCale+='<th colspan=2 style="border:solid 1pt #c6c6c6">'
strCale+='<select id="yearSel" onchange="parent.changeYM(this)" style="font:9pt;"></select>'
strCale+='<th colspan=3 style="border:solid 1pt #c6c6c6">'
strCale+='<select id="monthSel" onchange="parent.changeYM(this)" style="font:9pt;">'
for (i=0;i<12;i++){
strCale+='<option value='+i+(i==nMonth+1?' selected':'')+'>'+arMonth[i]+'</option>'
}
strCale+='</select><th bgcolor="#848484" style="color:#00ffff;border:solid 1pt #848484"'
strCale+=' onclick="parent.changeYM(this,1)">>></th>'
strCale+='<tr align=center style="color:#ffffff" bgcolor="#000000">'
strCale+='<td width=22 bgcolor="#ff0000">日'
strCale+='<td width=22>一<td width=22>二<td width=22>三<td width=22>四<td width=22>五'
strCale+='<td width=22 bgcolor="#ff0000">六</td></tr>'
var fDay=1-(new Date(nYear,nMonth,1).getDay())
for (i=0;i<42;i++){
if (i % 7==0)strCale+='<tr align=center>'
strCale+='<td style="border:solid 1pt #c6c6c6" onmouseover="parent.caleTDMove(this)"'
strCale+=' onmouseout="parent.caleTDOut(this)" onclick="parent.CaleClick(this)">'
strCale+=(fDay>0&&fDay<=qtyDay?fDay:'')+'</td>'
fDay++
}
strCale+='</tr>'
strCale+='<tr align=center bgcolor="#848484">'
strCale+='<td style="border:1pt solid #848484"> '
strCale+='<td colspan=2 style="border:1pt solid #848484" onmouseover="parent.caleTDMove(this)"'
strCale+=' onmouseout="this.style.borderColor=\'#848484\'"'
strCale+=' onclick="parent.CaleClick(this)">今天'
strCale+='<td style="border:1pt solid #848484"> '
strCale+='<td colspan=2 style="border:1pt solid #848484"'
strCale+=' onclick="this.style.borderColor=\'#848484\';parent.hideCale();"'
strCale+=' onmouseover="parent.caleTDMove(this)"'
strCale+=' onmouseout="this.style.borderColor=\'#848484\'">關閉'
strCale+='<td style="border:1pt solid #848484"> </td><tr>'
strCale+='</table>'
CaleBody.innerHTML=strCale
yearChange()