网址上的回调函数?

时间:2018-12-05 16:37:56

标签: javascript filter callback datatables

在我的Web应用程序中,我希望能够单击数据表中的href链接,该链接会在新页面上加载第二个表,该表又过滤掉行,以便该表仅显示与ID相同的行我在上一个表格/页面中单击的行的ID。

下面的代码不起作用。我相信这是因为在没有时间保存第一个表中的行数据之前,已经打开了一个新的网页,并且保存数据已经太迟了,因为它不再存在。有没有一种方法可以创建回调,以便在打开href链接之前执行我的javascript函数? 还是我做的这完全错误? 任何帮助将不胜感激。

Datatable.Column()代码:(用户单击表中的图像/ URL链接):

"data": "ErrorCount",
"render": function (data, type, row) {
         if (type === 'display') {
         return (data === 0)
         ? data = '<span data-search="0"></span>'
         : data = '<a id="errors" href="http://localhost/WTM/LogError/Index" type="hidden" class="fas fa-exclamation-triangle" style="color:red"></a>';
         }
         return data;
   },

JavaScript过滤器功能

var clickError = document.getElementById("errors")
var xTable = $('#WTM_LOG').DataTable();
var yTable = $('#LOG_ERROR').DataTable();

$('clickError').click(function () {

     var rowData = xTable.row(this).data();                        

     yTable.columns(0).search(rowData.TaskSchedulerLogUid).draw();
});

2 个答案:

答案 0 :(得分:1)

这里有多个问题:

  1. ID不能在页面中重复,请改用

  2. $('clickError')是无效的选择器

  3. 有问题的元素是动态呈现的,因此在运行代码时不会全部存在。使用事件委托

  4. 该行不是<a>

修复:

HTML

'<a ̶i̶d̶=̶"̶e̶r̶r̶o̶r̶s̶"̶ class="errors"...

JS

$('#tableID').on('click', 'a.errors', function(e){
    e.preventDefault();
    var row = $(this).closest('tr')[0]; 
    var rowData = xTable.row(row).data();
    yTable.columns(0).search(rowData.TaskSchedulerLogUid).draw();

})

答案 1 :(得分:0)

对于任何有兴趣的人。我找到了另一种方法。

首先,我将搜索查询/行ID添加到要打开的新页面的网址中,如下所示:

'<a href="http://[url]' + row.[column name] + '"></a>

然后我从url中提取了搜索查询/ ID,并使用新提取的搜索查询/ ID在新页面上搜索了表格,如下所示:

var queryString = window.location.search;
queryString = queryString.substring(4);
if (queryString == null) {
throw "Error: id is null"
} else {
WtmDetails.vars.secondaryTable.columns(0).search(queryString).draw();
}