2016-05-31 36 views
0

我想滚动到具有DataTable中特定ID的行。以下是它的代码。无法在DataTable中通过ID获取元素

function scroll_row(int_id) { 
    var obj_element = document.getElementById(int_id); 
    if(obj_element != null) { 
     var int_scroll_pos = obj_element.offsetTop; 
     $('#myTable').parent().scrollTop(int_scroll_pos-10); 
    } 
} 

但这样做的问题是,obj_element是给我空,同时通过ID得到它。

例如,如果我的数据表中有50行,并且尝试给出第40个元素的id,而滚动位于顶部则返回空值。

但是,当我向下滚动某处接近该元素。它会返回getElementById的值。

我不知道这里有什么问题。任何人都知道这件事?

我也尝试过做这样https://datatables.net/forums/discussion/33/using-fngetposition-to-find-a-tr-by-id

$("#myTable").fnGetPosition(document.getElementById("262617")) 

但在这种情况下,它说fnGetPosition不是一个函数。

这是我的数据表是如何

tableSettings = { 

... 

} 

var myTable = $('#myTable').DataTable(tableSettings); 

我无法理解什么是在这两个我提到的情况发生。希望得到一些帮助。谢谢:)

编辑 - 添加图像与例子

image with html

使用id = 140876的一个是数据表的最后一排的TR。如果我向上滚动到数据表的第一个元素并尝试document.getElementById(“140876”),它会让我为空。但是如果我滚动到底部,我会得到价值。每隔一行也一样。当我向上滚动时,向下的行将返回null。

P.S.必须删除第一张图片,现在我只能添加1个链接。

+0

你能请提供一个生成的HTML标记的例子? –

+0

我不太清楚你需要什么。我为fnGetPosition错误拍了截图。在其他情况下,当我控制台登录getElement id为例如第40个元素。它给出null。直到我将数据表向下滚动到第40个元素为止。我希望我不会感到困惑。 :) –

+0

如果没有'DataTables'生成的HTML,我们不能看到行是否包含你所期望的'id'。在请求'id'时,你没有得到任何东西的唯一原因是它没有出现在'DataTables'生成的代码中。 –

回答

0

要使用fnGetPosition,你应该使用这样的:

var table = $('#myTable').dataTable(); // with a lower 'd' 
var row_index = table.fnGetPosition(this)[0]; 

这里是一个工作示例:http://live.datatables.net/xoqidaqi/1/

这是错误的例子的修正版本,在这里找到:https://datatables.net/forums/discussion/21582/fngetposition-undefined

+0

我无法将DataTable更改为dataTable我已经使用的其他许多事情都不起作用。有没有其他解决方法? –

+0

我发布的代码旨在替换此调用'$(“#myTable”)。fnGetPosition(document.getElementById(“262617”))''。使用'DataTables''上面的'D'就是用设置实例化数据表。使用'dataTable'和更低的'd'将检索实例化的数据表。 –

+0

它仍然给我错误TypeError:a.nodeName未定义 ... osition = function(a){var b = this.api(!0),c = a.nodeName.toUpperCase(); return“TR” == c?... –