随手写的一个动态添加删除行的HTC行为组件
<!--***************dtable.htc*******************-->
<method name=addnew><method/>
<method name=del><method/>
<method name=lighton><method/>
<property name=nowrow><property/>
<property name=overid><property/>
<property name=myid><property/>
<property name=color0><property/>
<property name=color1><property/>
<ATTACH EVENT="oncontentready" ONEVENT="init()" />
<script language=javascript>
function init()
{
color0="#f8f4e4"; //行间隔色
color1="#f0f0e8"; //行间隔色
myid=0;
nowrow=0;
overid=1;
element.cellSpacing=1;
element.cellPadding=1;
element.border=0;
element.bgColor="#999999"; //边框颜色
element.delcolor="#FFCC99";//删除按钮颜色
element.delcolorover="#6699FF";//删除按钮颜色
var baserow=element.rows[0];
baserow.bgColor="#d8c8a8"; //标题行底色
baserow.style.cursor="default";
lastrow=element.rows[element.rows.length-1];
t=element;
initcolor();
//-----------------开始初始化已经存在的行----------------------
for (i=1;i<t.rows.length;i++)
{
t.rows[i].style.backgroundColor=eval("color"+i%2);
t.rows[i].attachEvent("onclick",lighton);
t.rows[i].style.cursor="default";
t.rows[i].cells[0].style.backgroundColor=element.delcolor;
t.rows[i].cells[0].style.cursor="hand";
t.rows[i].cells[0].attachEvent("onclick",delit);
t.rows[i].cells[0].attachEvent("onmouseover",delmouseover);
t.rows[i].cells[0].attachEvent("onmouseout",delmouseout);
}
//------------开始备份最后一行为动态表复制元素-----------------
t.tr_className=lastrow.className;
t.tr_cssText=lastrow.style.cssText;
t.td_count=lastrow.cells.length;
backupEvent("element.rows[element.rows.length-1]","TR");
for(i=0;i<lastrow.cells.length;i++)
{
backupEvent("element.rows[element.rows.length-1].cells["+i+"]","TD"+i);
t.td_cssText=lastrow.cells[i].style.cssText;
eval("t.td_innerHTML"+i+"=lastrow.cells[i].innerHTML");
}
//-------------------------备份完成----------------------------
}
function delmouseover()
{
ln=rowid();
element.rows[ln].cells[0].style.backgroundColor=element.delcolorover;
}
function delmouseout()
{
ln=rowid();
element.rows[ln].cells[0].style.backgroundColor=element.delcolor;
}
function lighton(line)
{
ln=(line==null||line=="[object]")?rowid():line;
row=element.rows[ln];
initcolor();
row.style.backgroundColor="#33FFFF";
lightcolor(ln);
nowrow=ln;
}
function delit()
{
ln=rowid();
if(element.rows.length!=2)
{
element.deleteRow(ln);
initcolor();
}
}
function del(line)
{
element.deleteRow(line);
initcolor();
}
function rowid()
{
row=window.event.srcElement;
while(row.tagName!="TR")row=row.parentElement;
return(row.rowIndex);
}
function initcolor()
{
for (i=1;i<element.rows.length;i++)
{
element.rows[i].style.backgroundColor=eval("color"+i%2);
for(j=0;j<element.rows[i].cells.length;j++)
{
for(k=0;k<element.rows[i].cells[j].childNodes.length;k++)
{
if(element.rows[i].cells[j].childNodes[k].style!=undefined)
element.rows[i].cells[j].childNodes[k].style.backgroundColor=eval("color"+i%2);
}
}
}
}
function lightcolor(ln)
{
i=ln;
element.rows[i].style.backgroundColor="#33FFFF";
for(j=0;j<element.rows[i].cells.length;j++)
{
for(k=0;k<element.rows[i].cells[j].childNodes.length;k++)
{
if(element.rows[i].cells[j].childNodes[k].style!=undefined)
element.rows[i].cells[j].childNodes[k].style.backgroundColor="#33FFFF";
}
}
}
function addnew(line)
{
ln=(line==null||line=="[object]")?element.rows.length:line;
element.insertRow();
for(i=0;i<element.td_count;i++)
{
element.rows[ln].insertCell();
}
element.rows[ln].style.cssText=element.tr_cssText;
element.rows[ln].className=element.tr_className;
restoreEvent("element.rows["+ln+"]","TR");
cell=element.rows[ln].cells;
for(i=0;i<cell.length;i++)
{
cell[i].innerHTML=eval("element.td_innerHTML"+i);
cell[i].style.cssText=eval("element.td_cssText"+i);
restoreEvent("element.rows["+ln+"].cells["+i+"]","TD"+i);
}
initcolor();
t=element
t.rows[ln].attachEvent("onclick",lighton);
t.rows[ln].style.cursor="default";
t.rows[ln].cells[0].style.backgroundColor=element.delcolor;
t.rows[ln].cells[0].style.cursor="hand";
t.rows[ln].cells[0].attachEvent("onclick",delit);
t.rows[ln].cells[0].attachEvent("onmouseover",delmouseover);
t.rows[ln].cells[0].attachEvent("onmouseout",delmouseout);
}
function copyEvent(tfrom,tto,str1,str2,xxx)
{
eval(tto+"."+str2+"onactivate="+tfrom+"."+str1+"onactivate");
eval(tto+"."+str2+"onbeforeupdate="+tfrom+"."+str1+"onbeforeupdate");
eval(tto+"."+str2+"onblur="+tfrom+"."+str1+"onblur");
eval(tto+"."+str2+"oncellchange="+tfrom+"."+str1+"oncellchange");
eval(tto+"."+str2+"."+str1+"onchange");
eval(tto+"."+str2+"."+str1+"onclick");
eval(tto+"."+str2+"oncontextmenu="+tfrom+"."+str1+"oncontextmenu");
eval(tto+"."+str2+"oncontrolselect="+tfrom+"."+str1+"oncontrolselect");
eval(tto+"."+str2+"oncopy="+tfrom+"."+str1+"oncopy");
eval(tto+"."+str2+"oncut="+tfrom+"."+str1+"oncut");
eval(tto+"."+str2+"ondblclick="+tfrom+"."+str1+"ondblclick");
eval(tto+"."+str2+"ondeactivate="+tfrom+"."+str1+"ondeactivate");
eval(tto+"."+str2+"ondrag="+tfrom+"."+str1+"ondrag");
eval(tto+"."+str2+"ondragend="+tfrom+"."+str1+"ondragend");
eval(tto+"."+str2+"ondragenter="+tfrom+"."+str1+"ondragenter");
eval(tto+"."+str2+"ondragleave="+tfrom+"."+str1+"ondragleave");
eval(tto+"."+str2+"ondragover="+tfrom+"."+str1+"ondragover");
eval(tto+"."+str2+"o

