JS封装的自动创建表格的实现代码


Posted in Javascript onJune 15, 2016

为接下来要做一个动态输入的表格积累的资料,非常不错,下面分享给大家,供大家参考,如果有更好的插件和封装的东西,共享下哈。。

关键代码如下:

<script type="text/javascript">
var currentActiveRow; //选中的颜色
var customTable = function() { };
customTable.prototype = {
init: {
ajaxUrl: "",
tId: "tbody",
delMsg: "确认要删除吗?"
},
ajax: function(params, callback) {
var that = 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("error log: " + data.responseText);
}
}
});
},
initData: function() {
var that = this;
var params = {
ajaxMethod: "getbookbag",
random: Math.random()
};
var suc = function(data) {
if (data.isSuccess === 1) {
} else {
}
};
var err = function() {
};
ttable.ajax(params, suc, err);
},
addRow: function() {
var tbody = document.getElementById(this.init.tId);
var rowNo = 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 = "<input name='radioRMS' type='radio' value='1'></input>";
tbody.rows[rowNo].insertCell(2);
tbody.rows[rowNo].cells[2].innerHTML = "<input name='checkboxRMS' type='checkbox' value='1'></input>";
tbody.rows[rowNo].insertCell(3);
tbody.rows[rowNo].cells[3].innerHTML = "<input name='descript' type='text' value='des" + (rowNo + 1) + "'></input>";
tbody.rows[rowNo].insertCell(4);
tbody.rows[rowNo].cells[4].innerHTML = "<input type='button' value='删除' onclick='ttable.deleteRow(event)'/><input type='button' value='编辑' onclick='ttable.editRow(event)'/><a href='javascript:void(0)' onclick='ttable.moveUp(this)'>↑</a>   <a href='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;
var rowNo = element.parentNode.parentNode.rowIndex;
var tbody = document.getElementById(this.init.tId);
tbody.deleteRow(rowNo - 1);
}
},
editRow: function() {
var element = 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 (var i = 0; i < element.childNodes.length; i++) {
var node = 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);
}
}
var ttable = new customTable();
</script>

其中HTML中的:

<table border="1" id="tableSpan">
<thead id="thead">
<tr onclick="ttable.changeActiveRow(this);">
<td>
序号
</td>
<td>
缺省
</td>
<td>
启用
</td>
<td>
选项内容
</td>
<td>
操作
</td>
</tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
<button onclick="ttable.addRow()" value="添加">
添加</button>
<button onclick="ttable.moveUp()" value="添加">
↑</button>
<button onclick="ttable.moveDown()" value="添加">
↓</button>

以上所述是小编给大家介绍的JS封装的自动创建表格的实现代码的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
Jun 04 Javascript
JavaScript获得url所有参数键值表的方法
Mar 21 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
Aug 17 Javascript
Jquery实现上下移动和排序代码
Oct 17 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
bootstrap输入框组件使用方法详解
Jan 19 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
Jun 01 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
koa大型web项目中使用路由装饰器的方法示例
Apr 02 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 Javascript
微信小程序获取用户绑定手机号方法示例
Jul 21 Javascript
基于JavaScript代码实现自动生成表格
Jun 15 #Javascript
JavaScript生成带有缩进的表格代码
Jun 15 #Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 #Javascript
JavaScript仿flash遮罩动画效果
Jun 15 #Javascript
jquery中的常见问题及快速解决方法小结
Jun 14 #Javascript
使用递归遍历对象获得value值的实现方法
Jun 14 #Javascript
浅谈js里面的InttoStr和StrtoInt
Jun 14 #Javascript
You might like
PHP程序员不应该忽略的3点
2015/10/09 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
微信小程序实现弹出菜单功能
2018/06/12 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
初学python数组的处理代码
2011/01/04 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
用python制作个音乐下载器
2021/01/30 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
《守株待兔》教学反思
2014/03/01 职场文书
贷款担保书范文
2014/05/13 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
社团招新宣传语
2015/07/13 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL