在D3.js的帮助下集成Datatables插件

时间:2015-03-25 13:12:34

标签: javascript jquery d3.js datatables jquery-datatables

我已经在这几个小时了 - 我无法弄清楚我的代码的哪一部分是错的。我设法在我运行代码时制作并显示一个合适的表但我希望能够使我的像这样的表 - http://www.codeproject.com/Articles/194916/Enhancing-HTML-tables-using-a-JQuery-DataTables-pl#Introduction

所以我尝试使用Datatable jquery插件。到目前为止没有运气。拜托,我将非常感谢你的帮助。

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.5/css/jquery.dataTables.css">
 <script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-1.6.3.min.js"></script>
<script type="text/javascript" language="javascript" src="http://cdn.datatables.net/1.10.5/js/jquery.dataTables.js"></script>
<script type="text/javascript" charset="utf8" src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://d3js.org/d3.v2.js"></script>


<style>
    table {
        border-collapse: collapse;
        border: 2px black solid;
        font: 12px sans-serif;
    }

    td {
        border: 1px black solid;
        padding: 5px;
    }
</style>
</head>
<body>



 <div id="container"></div>

  <script type="text/javascript"charset="utf-8">



  d3.text("file.csv", function (datasetText) {

  var rows = d3.csv.parseRows(datasetText);

  var tbl = d3.select("#container")
    .append("table")
    .attr("id","tableID");


// headers
  tbl.append("thead").append("tr")
    .selectAll("th")
    .data(rows[0])
    .enter().append("th")
    .text(function(d) {
        return d;
    });

   // data
    tbl.append("tbody")
    .selectAll("tr").data(rows.slice(1))
    .enter().append("tr")

    .selectAll("td")
    .data(function(d){return d;})
    .enter().append("td")
    .text(function(d){return d;})



   });

     $(document).ready(function() {
         $('#tableID').dataTable();
     } );


</script>
 </body>
 <html>

1 个答案:

答案 0 :(得分:0)

  1. 查看浏览器控制台是否有任何错误,如果您无法自行解释,请在此处提及。它说dataTables函数是未知的,这是因为你包含两个不同的jquery版本。我猜测第二个包含的jquery用定义的dataTables插件替换了初始命名空间。
  2. 不应在CSVs回调函数之外调用dataTables插件。如果加载csv&amp;执行回调需要太长时间,在DOM存在之前调用$('#tableID').dataTable();。将其移至回调中。
  3. $(document).ready(function() {
        d3.text("file.csv", function (datasetText) {
            // draw d3 elements
            $('#tableID').dataTable();
        });
    });