scrollIntoView()不会将节点滚动到树的顶部

时间:2019-04-30 10:11:24

标签: javascript jquery scroll fancytree

我遇到scrollIntoView()函数的问题。 我有一棵树和两个按钮:

  1. 首先将树滚动到底部节点
  2. second会将树滚动到顶部节点

我不知道该滚动操作将节点始终滚动到树的顶部该怎么办。我的意思是关于这个小提琴的情况:

http://jsfiddle.net/presto41/xzb62pw5/8/

如果您单击按钮#button1 (Scroll to bottom node),则树将滚动到底部节点-但底部节点将不在树的顶部。它的工作方式是“只是显示节点。完成”。

在这种情况下,我希望滚动到底部节点可以像滚动到顶部节点一样工作

  1. 点击#button1 (Scroll to bottom node)
  2. 点击#button2 (Scroll to top node)
  3. topNode在树的顶部

有什么想法吗?我试图通过options来操纵此scrollIntoView()函数,但是我做错了什么,或者它无法按预期工作。


  

编辑:我不明白为什么有人给我这个问题的减号。一世   做研究,我正试图自己解决这个问题   清楚说明我的问题。太烦人了。


  

编辑2:我没有这些节点的ID。我只是节点   Fancytree.FancytreeNode对象,所以我需要没有操作的解决方案   在节点ID上。


  

编辑3:这是我的伪代码,与原始密码最相似:   http://jsfiddle.net/presto41/xzb62pw5/27/

2 个答案:

答案 0 :(得分:0)

使用scrollIntoView()可以将id =“ content”的元素滚动到浏览器窗口的可见区域:

    var el = document.getElementById("content");
    el.scrollIntoView();

可使用的方式

    function scrollToBottom(){
       var eldiv = document.getElementById("content");
       eldiv.scrollTop = div.scrollHeight - div.clientHeight;
    }
    function scrollToTop(){
       var eldiv = document.getElementById("content");
       eldiv.scrollTop = 0;
    }

答案 1 :(得分:0)

我找到了解决方案。 解决方法是功能:

function expandAndScrollTo(node) {
       node.setExpanded(true).then(()=>{
       node.span.scrollIntoView({behavior:'smooth', inline:'start'});
  });}