如何使用JavaScript或jQuery将动态生成的表转换为DataTable

How can I convert dynamically generated table into DataTable using JavaScript or jQuery?

本文关键字:转换 DataTable 动态 JavaScript 何使用 jQuery      更新时间:2024-01-29

我所做的是创建动态HTML表。现在我想把这个表转换成jQuery DataTables

有什么可能的方法吗?

我在这里附上了我的动态HTML table

<html>
<body>
<script type="text/javascript" charset="utf-8" src="/DataTables/media/js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="/DataTables/media/js/jquery.dataTables.js"></script>
        <table >
            <tr>
                <td>Enter Rows</td>
                <td><input type="number" id="txtRows"/></td>
            </tr>
            <tr>
                <td>Enter Columns</td>
                <td><input type="number" id="txtCols"/></td>
            </tr>
            <tr>
                <td colspan="2"><input type="button" id="btnDisplay" value="Display" onClick="ShowTable();"/></td>
            </tr>
        </table>
        <table id="tbl_DynamicTable" border="1" style="display:none">
        </table>
    </body>
<script type="text/JavaScript">
        function ShowTable()
        {
        debugger;
            document.getElementById("tbl_DynamicTable").style.display = "";
            createTable();
        }
        function createTable()
            {
            debugger;
                var rows = document.getElementById("txtRows").value;
                var cols = document.getElementById("txtCols").value;
                var table = document.getElementById("tbl_DynamicTable");
                var str="";
                var randomColor; 
                for(var i=0;i<rows;i++)
                {
                    randomColor = '#'+Math.floor(Math.random()*16777215).toString(16);
                    str += "<tr id=row" + i +" bgcolor="+randomColor+">";
                    for(var j=0;j<cols;j++)
                    {
                        if(i==0)
                        {
                            str += "<th> Header " + j + "</th>";
                        }
                        else
                        {
                            str += "<td> Row " + i + ", Cell "+ j + "</td>";
                        }
                    }
                    str += "</tr>";
                }
                table.innerHTML = str;
            }
    </script>
</html>

现在如何将该表转换为jQuery的DataTable?

试试这个例子:

在您声明的otable函数之外

var oTable;

创建html表后在函数内部:

 if(oTable.length>0)
       oTable.fnDestroy();

    oTable=$("tableid").dataTable({
                    "sDom": '<"top"i>rt<"bottom"flp><"clear">',
                    "sScrollY":500,
                    "bScrollCollapse": true,
                    "bPaginate": true,
                    "bFilter": true,
                    "bSort": true,
                    "bInfo": false,
                    "bSortClasses": false
                });

在添加每个动态行时,将其推送到数组中,它将存储详细信息,然后您可以发送到数据库