JS封装的自动创建表格的实现代码
为接下来要做一个动态输入的表格积累的资料,非常不错,下面分享给大家,供大家参考,如果有更好的插件和封装的东西,共享下哈。。
关键代码如下:
<scripttype="text/javascript">
varcurrentActiveRow;//选中的颜色
varcustomTable=function(){};
customTable.prototype={
init:{
ajaxUrl:"",
tId:"tbody",
delMsg:"确认要删除吗?"
},
ajax:function(params,callback){
varthat=this;
$.ajax({
type:"get",
cache:false,
dataType:"json",
url:that.init.ajaxUrl,
data:params,
success:arguments[1]||function(){},
error:arguments[2]||function(){
if(window.console){
console.log("errorlog:"+data.responseText);
}
}
});
},
initData:function(){
varthat=this;
varparams={
ajaxMethod:"getbookbag",
random:Math.random()
};
varsuc=function(data){
if(data.isSuccess===1){
}else{
}
};
varerr=function(){
};
ttable.ajax(params,suc,err);
},
addRow:function(){
vartbody=document.getElementById(this.init.tId);
varrowNo=tbody.rows.length;
tbody.insertRow(rowNo);
tbody.rows[rowNo].insertCell(0);
tbody.rows[rowNo].cells[0].appendChild(document.createTextNode(rowNo+1));//innerText="0001";//innerText和innerHTML
tbody.rows[rowNo].insertCell(1);
tbody.rows[rowNo].cells[1].innerHTML="<inputname='radioRMS'type='radio'value='1'></input>";
tbody.rows[rowNo].insertCell(2);
tbody.rows[rowNo].cells[2].innerHTML="<inputname='checkboxRMS'type='checkbox'value='1'></input>";
tbody.rows[rowNo].insertCell(3);
tbody.rows[rowNo].cells[3].innerHTML="<inputname='descript'type='text'value='des"+(rowNo+1)+"'></input>";
tbody.rows[rowNo].insertCell(4);
tbody.rows[rowNo].cells[4].innerHTML="<inputtype='button'value='删除'onclick='ttable.deleteRow(event)'/><inputtype='button'value='编辑'onclick='ttable.editRow(event)'/><ahref='javascript:void(0)'onclick='ttable.moveUp(this)'>↑</a> <ahref='javascript:void(0)'onclick='ttable.moveDown(this)'>↓</a>";
tbody.rows[rowNo].onclick=ttable.changeActiveRow;
},
deleteRow:function(eve){
if(confirm(this.init.delMsg)){
element=window.event?window.event.srcElement:eve.target;
varrowNo=element.parentNode.parentNode.rowIndex;
vartbody=document.getElementById(this.init.tId);
tbody.deleteRow(rowNo-1);
}
},
editRow:function(){
varelement=window.event?window.event.srcElement:eve.target;
alert(element);
},
changeActiveRow:function(){//设置选中行的背景色
eve=arguments[0];
element=window.event?window.event.srcElement:eve.target;
obj=element.parentNode;
while(obj&&obj.tagName!="TR"){
obj=obj.parentNode;
if(currentActiveRow)
currentActiveRow.style.backgroundColor="";
currentActiveRow=obj;
currentActiveRow.style.backgroundColor="Red";
}
},
cleanWhitespace:function(element){
//遍历element的子节点
for(vari=0;i<element.childNodes.length;i++){
varnode=element.childNodes[i];
if(node.nodeType==3&&!/\s/.test(node.nodue))
node.parentNode.removeChild(node);
}//使表格行上移,接收参数为链接对象
},
moveUp:function(_a){
var_table=document.getElementById(this.init.tId);
ttable.cleanWhitespace(_table);
//var_row=_a.parentNode.parentNode;
var_row=currentActiveRow;
//如果不是第一行交换顺序
if(_row.previousSibling)
ttable.swapNode(_row,_row.previousSibling);
},
moveDown:function(_a){
var_table=document.getElementById(this.init.tId);
ttable.cleanWhitespace(_table);
//通过链接对象获取表格行的引用
//var_row=_a.parentNode.parentNode;
var_row=currentActiveRow;
//如果不是最后一行则与下一行交换顺序
if(_row.nextSibling)
ttable.swapNode(_row,_row.nextSibling);
},
swapNode:function(node1,node2){
var_parent=node1.parentNode;
var_t1=node1.nextSibling;
var_t2=node2.nextSibling;
//将node2插入到原来node1的位置
if(_t1)
_parent.insertBefore(node2,_t1);
else
_parent.appendChild(node2);
//将node1插入到原来ndoe2的位置
if(_t2)
_parent.insertBefore(node1,_t2);
else
_parent.appendChild(node1);
}
}
varttable=newcustomTable();
</script>
其中HTML中的:
<tableborder="1"id="tableSpan"> <theadid="thead"> <tronclick="ttable.changeActiveRow(this);"> <td> 序号 </td> <td> 缺省 </td> <td> 启用 </td> <td> 选项内容 </td> <td> 操作 </td> </tr> </thead> <tbodyid="tbody"> </tbody> </table> <buttononclick="ttable.addRow()"value="添加"> 添加</button> <buttononclick="ttable.moveUp()"value="添加"> ↑</button> <buttononclick="ttable.moveDown()"value="添加"> ↓</button>
以上所述是小编给大家介绍的JS封装的自动创建表格的实现代码的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!