js操作表元素实现表列的添加和删除
/ ************ tabletool.js ******************************************************************************************************************
**************************************************************快速索引***************************************************************
表行和列删除
{一},dotablerowdelete注:根据当前的事件点的默认对象,发现TR,删除(可选:表对象;线数,删除升序方式以逗号分隔,行如2, 3, 5;通过TD几次,默认值是1)
结合天安门
{ 1 },conbaintablerow说明垂直单元格相同的内容合并到表对象,和列需要合并,(可选参数从第几行开始)。
{二},combinecell解释:水平细胞进入细胞中的一个对象,(可选参数,合并几个细胞;并保留原单元格的值)。
移动电话线和天安门
{ 1 },上说明:向上移动,(可选参数,大多数移动到第一行,默认是零线,移动线或TD对象或子对象的默许,TD线当前事件的默许默许)。
{二},向下移动解释:向下移动,(可选参数,最小移动倒排,默认是互惠的零线,需要在TD,TD移动线或对象或子对象的当前事件的默许默许线)。
{三},movecell描述:线路交换,表对象,所交换的线数
赋值方单元格样式
{ 1 },clonestyle描述:模板单元格的复制到目标单元格的样式、模板细胞,纠正细胞的风格
新的行和柱天安门
{ 1 },inserttablerow解释:添加行,表对象,添加行内容(可选参数的数组,每个细胞,合并单元格数组参数默许前行时,属性添加到行的行数是最后一行)。
{二},inserttablecol解释:添加新列,表对象,添加行内容(可选参数的数组,每个细胞,行数组参数默认属性的前列,添加到列,默认是最后一列的列数)。
获取表中的一行元素***
{ 1 },dogetrowobj说明:表中获取元素,表对象,行数,(可选参数,复制对象是否是假的,是否得到单元格对象,默认值为假)。
家宝获得其他验证和参数
{ 1 },dofetchbasecols解释说:在拿到表格,行列数的实际位置表对象、列数,返回一个数组,每一行记录指定的单元格的cellindex。
{二},dofetcheffectcells描述:得到一个细胞的集合,被插入到当前行和由RowSpan属性的影响
{三},calculatespanwidth解释:计算跨度的宽度,根据在当前跨单元格的宽度,(可选参数:对象的容器,容器对象是空的,以当前的文件,即遍历所有跨对象在页面上)。
*******************************************************************************************************************************************
*********************************************************************************************************************************************** /
*删除表的行
*
* tdcount痕迹TD对象几次根据当前事件的事件,默认为1次
*
*注意:事件事件需要附加到将删除的TD,不能有多个TD的多个嵌套;否则,您需要指定TD对象的嵌套层。
* /
功能dotablerowdelete(){
无功tablobj =论点{ 0 };
无功trindexs =论点{ 1 };
无功tdcount =论点{ 2 } = = undefined1:parseFloat(参数{ 2 });
如果(trindexs = = undefined){
tdcount = tdcount-1;
无功tdobj = event.srcelement;
无功trobj,tableobj;
而(tdcount > 0){
tdcount --;
而(tdobj.tagname!= 'td){
tdobj = tdobj.parentnode;
}
tdobj = tdobj.parentnode;
}
而(tdobj.tagname!= 'td){
tdobj = tdobj.parentnode;
}
trobj = tdobj.parentnode;
tableobj = trobj.parentnode;
如果(tableobj.tagname!= }}){
tableobj = tableobj.parentnode;
}
无功cellindex = tdobj.cellindex;
VaR开始= trobj.rowindex;
无功effectcells = dofetcheffectcells(tableobj,开始);
对于(var i = 0;i < effectcells.length;i++){
effectcells {我},{我}行= effectcells行1;
}
tableobj.deleterow(开始);
其他{ }
无功delindexarr = trindexs.split(
对于(var i = delindexarr.length-1;我> 1;我--){
tablobj.deleterow(delindexarr {我});
}
}
isdeleteflag =真;
返回isdeleteflag;
}
*删除表的列
*
* tdcount痕迹TD对象几次根据当前事件的事件,默认为1次
*
*注意:事件事件需要附加到将删除的TD,不能有多个TD的多个嵌套;否则,您需要指定TD对象的嵌套层。
* /
功能dotablecoldelete(){
无功isdeleteflag = false;
无功tdcount =论点{ 0 } = = undefined1:parseFloat(参数{ 0 });
无功tdobj = event.srcelement;
而(tdcount!= 0){
tdcount --;
而(tdobj.tagname!= 'td){
tdobj = tdobj.parentnode;
}
}
无功trobj = tdobj.parentnode;
无功tableobj = trobj.parentnode;
无功cellindex = tdobj.cellindex;
VaR开始= trobj.rowindex;
tableobj.deleterow(开始);
isdeleteflag =真;
返回isdeleteflag;
}
*根据最近的TD外部宽度的宽度重新设置当前跨度的宽度
*
* OBJ可以在网页上,一个容器对象TR,TD,和表,这项是空的,和网页上的所有跨对象遍历
* /
功能calculatespanwidth(){
var obj =论点{ 0 };
无功spanobjs;
如果(obj!=未定义的){
spanobjs = obj.getelementsbytagname('span);
其他{ }
spanobjs = document.getelementsbytagname('span);
}
对于(var i = 0;i < spanobjs.length;i++){
无功tdobj = spanobjs {我}的父节点;
而(tdobj.tagname!= 'td'typeof(tdobj)= = 'object){
tdobj = tdobj.parentnode;
}
如果(tdobj tagname = =。'td){
无功offsetwidth = tdobj.offsetwidth;
spanobjs {我}。style.width = offsetwidth-5;
}
}
}
*合并表中垂直单元格的同一项内容
*
* tableobj表对象(必须)
* combaincols需要合并列(格式:从小到大,连续使用分裂,独立的逗号;例如:1-5,7,9)
* beginrowindex开始从几行合并,由线零违约
* /
功能conbaintablerow(){
无功tableobj =论点{ 0 };
无功combaincols =论点{ 1 };
无功beginrowindex =论点{ 2 } = = undefined0:论点{ 2 };
/ /无功begincolindex =论点{ 3 } = = undefined0:论点{ 3 };
无功colsarr = combaincols.split(
var列=新的数组();
VaR指标= 0;
对于(var i = 0;i < colsarr.length;i++){
无功indexchar = colsarr {我},indexOf();
如果(indexchar!= 1){
VaR beginIndex = parseInt(colsarr {我}。substring(0,indexchar));
VaR endIndex = parseInt(colsarr {我}。substring(indexchar + 1));
对于(var j = beginIndex;J <= endIndex;j++){
因为{指数+ } = J;
}
}
别的{
因为{指数+ } = parseInt(colsarr {我});
}
}
如果(tableobj。行。长> beginrowindex){
无功modelarr =新的数组();
对于(var i = beginrowindex;i < tableobj.rows.length;i++){
无功行= tableobj行{我};
对于(VAR K = cols.length-1;K>=0;K){
var j =列{ k };
如果(modelarr { } = =定义{J}.){
modelarr { } = J排。细胞J } {;
其他{ }
如果(行。细胞{ J }。outertext = = modelarr {,}。outertext){
modelarr {,},{ }行= modelarr J行+ 1;
row.deletecell(J);
其他{ }
modelarr { } = J排。细胞J } {;
}
}
}
}
}
}
*动起来
*
* minrowindex上移的最小行数,默认情况下为零
* ELM可以默认。如果当前移动行需要与函数的位置进行比较,则需要引用TR对象本身或当前行的TD对象。
*
*回报,此举返回true,如果当前行minrowindex线返回false
* /
功能上(){
输入对象
无功minrowindex =论点{ 0 } = = undefined0:论点{ 0 };
输入对象
var =参数{ 1 };
返回值
VaR成功=假;
表对象
无功表;
如果(ELM =未定义){
榆树= event.srcelement;
}
而(elmelm.tagname!=TR){
榆树= elm.parentelement;
}
当前行号
var x = elm.rowindex;
获取表对象
elm.parentelement表=;
如果(mytable.tagname!= }}){
mytable.parentnode表=;
}
移动到前一行
如果(x > minrowindex){
movecell(mytable,X,X);
成功=真;
}
返回成功;
}
向下移动
*
* minrowindex下移到倒数的表行数,默认值为零,该表的最后一行。
* ELM可以默认。如果当前移动行需要与函数的位置进行比较,则需要引用TR对象本身或当前行的TD对象。
*
*返回,移动成功返回true,如果最后一行出现,返回false。
* /
函数向下移动(){
输入对象
无功minrowindex =论点{ 0 } = = undefined0:论点{ 0 };
输入对象
var =参数{ 1 };
返回值
VaR成功=假;
表对象
无功表;
如果(ELM =未定义){
榆树= event.srcelement;
}
而(elmelm.tagname!=TR){
榆树= elm.parentelement;
}
当前行号
var x = elm.rowindex;
获取表对象
elm.parentelement表=;
如果(mytable.tagname!= }}){
mytable.parentnode表=;
}
无功tablelength = mytable.rows.length;
/ / MoveNext
如果(x<tablelength-minrowindex-1){
movecell(mytable,x,x + 1);
成功=真;
}
返回成功;
}
*线交换,处理复选框丢失值的问题
*
* mytable表对象
*行号
*电话号码
* /
功能movecell(mytable,A,B){
VaR E2 =表{一}。行。all.tags(输入);
VaR E3 =表。行{黑}。all.tags(输入);
var arr = { };
输入行的所有输入控件
为(i = 0;i < e2.length;i++){
如果(E2 { },类型=复选框){
将所有复选框控件添加到数组中。
Arr.push(E2 {我},{我} E2。检查);
}
}
用于遍历B行的所有输入控件
为(i = 0;i < e3.length;i++){
如果(E3 { }类型=复选框){
将所有复选框控件添加到数组中。
Arr.push(E3 {我},{我} E3。检查);
}
}
MyTable.moveRow(A,B);
获取数组中的所有元素和对引用值的引用。
而(arr.length > 0){
Arr.shift()()arr.shift检查=;
}
}
*为传入单元格样式替换单元格样式
*
* tdobj模板单元格
* targettdobj换靶细胞
*
* /
功能clonestyle(){
单元格/对象
无功tdobj =论点{ 0 };
列的数目/合并
无功targettdobj =论点{ 1 };
传入的/对象克隆
无功tempobj = tdobj.clonenode(假);
目标对象的克隆
无功targethtml = targettdobj.innerhtml;
横向合并的数量
VaR targettdobj.colspan colspan =;
垂直合并的数量
VaR的行= targettdobj.rowspan;
宽度
VaR的宽度= targettdobj.width;
对象
无功rowobj = tdobj.parentnode;
替换当前单元格
rowobj.replacechild(tempobj,targettdobj);
/ /(var i = 0;i < targetobj.childnodes.length;i++){
/ / tempobj.appendchild(targetobj。子{我});
/