【问题标题】:Javascript Error with DataTable jQuery pluginDataTable jQuery 插件的 Javascript 错误
【发布时间】:2010-04-16 00:33:10
【问题描述】:

我收到了一个 JS 错误,我知道它是什么意思以及如何解决它。 (这里是JS菜鸟)

错误:“tId 未定义”

有错误的 JS 行: "if (s[i].sInstance = tId) { "

更多信息

我正在使用数据表 (http://datatables.net) jQuery 插件。

我有两个表,页面上加载了一个“dataTable”类(在 jQuery UI 选项卡内)。表格按预期呈现,但我在 Firebug 中收到上述错误。

附件是我的数据表配置文件...

$(document).ready(function() {

//Take from: http://datatables.net/forums/comments.php?DiscussionID=1507
// before creating a table, make sure it is not already created. 
// And if it is, then remove old version before new one is created        
var currTable = $(".dataTable");
if (currTable) {
  // contains the dataTables master records
  var s = $(document).dataTableSettings;
  if (s != 'undefined') {
    var len = s.length;
    for (var i=0; i < len; i++)
    {   
        // if already exists, remove from the array
        if (s[i].sInstance = tId) {
            s.splice(i,1);
        }
    }

  }
}

oTable = $('.dataTable').dataTable({

        "bJQueryUI": true,
        "sPaginationType": "full_numbers",
        "bFilter": false


}); 
});

错误是什么意思,我该如何解决?

【问题讨论】:

  • 它准确地告诉你出了什么问题。代码使用的变量 (tId) 未定义。要解决错误,请定义变量!

标签: javascript jquery datatable


【解决方案1】:

这意味着它所说的:tId 变量从未被分配给。因此,您不能将其分配给另一个变量。

该代码有一些问题。

首先:

var currTable = $(".dataTable");
if (currTable) {

... currTable 将始终与 jQuery 保持一致。这是因为即使是空数组也是真实的。预期的测试可能是if (currTable.length &gt; 0)

看起来这是在测试它是字符串还是数组:

if (s != 'undefined') {

你可以改为if ($.isArray(s)) {

最后,当你拼接一个你正在迭代的数组时,你会遇到索引问题。

相反,我认为您想要做的是遍历 $('.table') 返回的表,并针对 s 测试这些元素的 ID。

【讨论】:

    【解决方案2】:

    我有两个表,其中一个类 “dataTable”加载在页面上(内部 jQuery UI 选项卡)。表格呈现 正如预期的那样,但我得到了上面的错误 在 Firebug 中。

    我认为您需要为每个表使用不同的类名...

    var oFirstTable;
    var oSecondTable;
    
    $(document).ready(function() {
    
        // class = FirstTable
        oFirstTable = $('.FirstTable').dataTable({
            "bJQueryUI": true,
            "sPaginationType": "full_numbers",
            "bFilter": false
        }); 
    
        // class = SecondTable
        oSecondTable = $('.SecondTable').dataTable({
            "bJQueryUI": true,
            "sPaginationType": "full_numbers",
            "bFilter": false
        }); 
    });
    

    我目前在我的应用程序的几个页面上使用了 2 个数据表,它们运行良好。

    【讨论】:

      猜你喜欢
      • 2015-12-27
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多