zoukankan      html  css  js  c++  java
  • js 封装的自动创建表格的相关操作

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

    <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>

     

  • 相关阅读:
    java实现三角螺旋阵
    java实现人员排日程
    java实现人员排日程
    java实现人员排日程
    java实现人员排日程
    java实现人员排日程
    java实现人民币金额大写
    为什么使用剪切板时都用GlobalAlloc分配内存(历史遗留问题,其实没关系了)
    深入解析Windows窗口创建和消息分发(三个核心问题:怎么将不同的窗口过程勾到一起,将不同的hwnd消息分发给对应的CWnd类去处理,CWnd如何简单有效的去处理消息,由浅入深,非常清楚) good
    Delphi中array of const应用
  • 原文地址:https://www.cnblogs.com/cxlings/p/3474928.html
Copyright © 2011-2022 走看看