因为要做一个动态输入的表格,现在积累一下资料,在网上找了一些资料,经过总结是使用更加方便些,谁有更好的插件和封装的东西,请大家分享一下。

<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> &nbsp;&nbsp;<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>

 

最新文章

  1. PHP Fatal error: Call to undefined function mb_substr()
  2. 使用plsql执行计划进行sql调优(转载)
  3. 网络笔记02数据解析 -1-JSON解析
  4. Django开发网站(四)
  5. ALM11 OTA API接口的问题
  6. 百度地图SDK下载以及创建应用(申请Key)和本地导入Demo
  7. 察看so文件的依赖关系
  8. 升讯威微信营销系统开发实践:(5) Github 源码:微信接口的 .NET 封装。
  9. 关于thinkphp控制器引用model里的方法的一点收获
  10. 优化Linux内核参数提高服务器负载能力
  11. Algorithm --&gt; 全排列
  12. C++std函数之transform
  13. 2018-2019-1 20189210 《LInux内核原理与分析》第六周作业
  14. Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.
  15. Python 通过 SMTP 发送邮件
  16. Python学习总结(一)—— 十分钟入门
  17. Vue组件的介绍与使用
  18. JavaScript_原型和继承(2017-03-15)
  19. headfirst python 05, 06
  20. nginx源码学习 资料

热门文章

  1. php中的__call()函数重载
  2. linux之cron定时任务介绍
  3. Vuex 基本概念
  4. C++之初始化问题
  5. inet_select_addr
  6. RadioButton 带下划线切换的案例
  7. AspxGridView在cell内显示颜色
  8. Vim配置Node.js开发工具
  9. AC自动机算法
  10. [BZOJ4456] [Zjoi2016]旅行者 分治+最短路