Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DataTables-从不同JavaScript文件中创建的HTML表中删除DataTables_Javascript_Jquery_Datatable - Fatal编程技术网

DataTables-从不同JavaScript文件中创建的HTML表中删除DataTables

DataTables-从不同JavaScript文件中创建的HTML表中删除DataTables,javascript,jquery,datatable,Javascript,Jquery,Datatable,因此,我有一个网站,我每天访问的工作。这个网站上的实现非常糟糕。DataTable应用于呈现页面时生成的HTML表,然后DataTable在其上初始化。我觉得这很好,因为我可以创建一个小小的TamperMonkey脚本来删除可怕的数据表,并创建一个我需要的函数 数据表是通过内联Javascript在文档body末尾创建的。对于destory()方法,我尝试了以下方法 // ==UserScript== // @name // @version 0.1 // @descript

因此,我有一个网站,我每天访问的工作。这个网站上的实现非常糟糕。DataTable应用于呈现页面时生成的HTML表,然后DataTable在其上初始化。我觉得这很好,因为我可以创建一个小小的
TamperMonkey
脚本来删除可怕的数据表,并创建一个我需要的函数

数据表是通过内联
Javascript
在文档
body
末尾创建的。对于
destory()
方法,我尝试了以下方法

// ==UserScript==
// @name       
// @version    0.1
// @description  Makes the Invoice Table more user friendly
// @include      URL
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require  http://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.1/js/jquery.dataTables.min.js

// @copyright  2014+, Me
// ==/UserScript==
$(function() {
   var t = $('#customer_invoices').DataTable();
   t.destroy();

});
它不会如文档中所述“删除这些增强功能并将表返回到其原始未增强状态,数据显示在表中”。它似乎没有任何作用

我认为这可能是因为表尚未初始化Datatable,或者我无法在不同的范围内访问原始Datatable初始化


非常感谢您提供的任何帮助,因为这会让我头痛。

使用
.destroy()
方法将无法做到这一点

// ==UserScript==
// @name       
// @version    0.1
// @description  Makes the Invoice Table more user friendly
// @include      URL
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require  http://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.1/js/jquery.dataTables.min.js

// @copyright  2014+, Me
// ==/UserScript==
$(function() {
   var t = $('#customer_invoices').DataTable();
   t.destroy();

});
如果打开控制台,通常可以通过运行以下命令来完成此操作:

$("#elementID").dataTable.destroy()
注意:我没有使用
dataTable().destroy()
,因为元素已经是dataTable了

但是,您遇到的问题是不存在
destroy
方法。。。因为数据表源代码已经缩小,不再称为
destroy
。。。而是给出一个占用空间小得多的令牌名(可能是b或c d之类的)


要做您想做的事情,唯一的方法是物理地改变元素的属性,使其成为dataTable。。。或者查找缩小文件的映射文件,这可以让您找到应该调用哪个缩小函数引用,而不是
destroy()
以获得所需的效果。

您可以选择的一种方法是在进行任何更改之前克隆您的div。在进行更改之后,用克隆替换该div。

您是否考虑过清除表中的所有类/id名称,因此,将其还原为一个通用html表?@Eclecticist I没有,因为DT初始化还将参数
bVisible
添加到一些行中。我希望在销毁DT时,这些行再次可见。该元素已转换为数据表元素,因此您无需调用
dataTable()
(注意驼峰案例)。。。这将是访问内存中已有对象的
destroy
方法的问题。我正在修修补补,如果我找到答案,我会发布一个答案。您可能还希望绑定一个自定义事件侦听器,该侦听器在调用dataTable时对元素调用destroy,以确保在初始化元素的dataTable后调用destroy。如果在脚本上使用未统一的版本,它会工作吗?我的控制台中没有关于
destroy
方法的错误,情况是否?我正在考虑访问DT中的数据对象并从头开始重新创建表。。。这取决于DT源代码是否在返回在元素上实现特性之前检查给定元素上的现有实现。最好的方法是尝试使用prototype在DataTable上用所需的方法名重新实现所需的功能,然后在任何DataTable元素上调用
destroy