【问题标题】:JQuery Datatable-Unable to get value of the property 'style': object is null or undefinedJQuery Datatable-无法获取属性“样式”的值:对象为空或未定义
【发布时间】:2023-03-18 07:23:01
【问题描述】:

场景:我在 2 个选项卡中有 2 个不同的数据表。 单击选项卡时,我将显示/隐藏 div 和相应的数据表。

在 document.Ready 上,我正在初始化数据表。它现在工作正常。但是,当我从一个选项卡切换到另一个选项卡然后调整浏览器窗口大小时,我在控制台中收到以下错误:

SCRIPT5007:无法获取属性“样式”的值:对象是 空或未定义

我在 datatable.min.js(版本 1.10.10)中遇到错误。附上报错截图:

数据表的初始化如下:

var $employeeTable,
     savedPage ;
function initalizeEmp() {
    $employeeTable = $('#employee').DataTable({
        responsive: true,
        "order": [[1, "desc"]],
        "lengthMenu": [[10, 25], [10, 25]],
        "columnDefs": [{
            "targets": 4,
            "render": function (data, type, full, meta) {
                if ($(data).attr('results-grid') != "")
                    return '<a href="javascript: void(0);" onclick="window.open(\'../School/DownloadEmp.aspx?EmpID=' + $(data).attr('results-grid') + '\')" target="_blank">' + data + '</a>';
                    //return '<a href="javascript: void(0);" onclick="EmpLink(' + $(data).attr('results-grid') + ')">' + data + '</a>';
                else
                    return data;
            }, "orderable": true
        },
        {
            'bSortable': false,"targets": [0]
        },
        { type: 'date-mm-dd-yyyy', targets: 1 },
        {
            'bSortable': false,"targets": [6]
        },
        {
            'bSortable': false,"targets": [7]
        },
        {
            'bSortable': false,"targets": [8]
        }
        ],
        fnInitComplete: function () {
            setTimeout(function () {
                if (typeof savedPage !== 'undefined') {
                    $employeeTable.page(savedPage).draw(false);
                }
                //$('body').vtUnmask();
            }, 10);
        }
    });

    $('#employee').on('page.dt', function () {
        savedPage = $employeeTable.page();
        $('input[id*="_checkBox"]').attr('checked', false);
    });
 }

【问题讨论】:

  • 错误是否与代码中的特定行相关?
  • 尝试相同的代码,但不要在表格属性末尾的方括号后面加上逗号。 ... 'bSortable': false,"targets": [8] } ],
  • 嗨@jonmrich,感谢您的回复我尝试不使用逗号,但仍然无法正常工作。我也添加了错误的屏幕截图。请检查一下。
  • 知道了...这几乎肯定是由于您的列数错误造成的。如果您在 HTML 中定义列并且在数据表启动中具有不同数量的列,那么您将收到此错误。表格的 HTML 是什么样的?

标签: javascript jquery datatable datatables nullreferenceexception


【解决方案1】:

您的问题发生在渲染中:

      "render": function (data, type, full, meta) {
            if ($(data).attr('results-grid') != "")
                return '<a href="javascript: void(0);" onclick="window.open(\'../School/DownloadEmp.aspx?EmpID=' + $(data).attr('results-grid') + '\')" target="_blank">' + data + '</a>';
                //return '<a href="javascript: void(0);" onclick="EmpLink(' + $(data).attr('results-grid') + ')">' + data + '</a>';
            else
                return data;
        }

你想访问属性'results-grid'但$(data)不是html元素是值,要访问td元素,你可以使用fnCreateCell

       "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
            if ($(nTd).attr('results-grid') != "")
            {
                return '<a href="javascript: void(0);" onclick="window.open(\'../School/DownloadEmp.aspx?EmpID=' + $(nTd).attr('results-grid') + '\')" target="_blank">' + sData + '</a>';
            }else{
                return sData;
            }
        }

示例:https://jsfiddle.net/cmedina/7kfmyw6x/3/

【讨论】:

  • 嗨@CMedina,感谢您的回复。我尝试了您建议的代码,但它不起作用。我添加了在 datatable.min.js(版本 1.10.10)中发现的问题的屏幕截图。请检查一下。如果您需要更多信息,请告诉我。
  • @PranavKumar 您可以显示您的标签页的代码 html 以提供帮助!
猜你喜欢
  • 2012-06-11
  • 2013-04-24
  • 1970-01-01
  • 2023-03-25
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多