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 相关文章推荐
基于Jquery的温度计动画效果
Jun 18 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
Nov 23 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
JavaScript表格常用操作方法汇总
Apr 15 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
javascript中数组方法汇总
Jul 07 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 Javascript
用js实现博客打赏功能
Oct 24 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
Nov 15 Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 Javascript
js+canvas实现纸牌游戏
Mar 16 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
Nov 09 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简单静态页生成过程
2008/03/27 PHP
PHP中str_replace函数使用小结
2008/10/11 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
js类中获取外部函数名的方法
2007/08/19 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
js闭包的用途详解
2014/11/09 Javascript
Javascript学习指南
2014/12/01 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
python3调用R的示例代码
2018/02/23 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
python装饰器使用实例详解
2019/12/14 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
python os.listdir()乱码解决方案
2021/01/31 Python
2014年冬季防火方案
2014/05/21 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
家装业务员岗位职责
2015/04/03 职场文书
汉字听写大会观后感
2015/06/12 职场文书
2016年五一促销广告语
2016/01/28 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python