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

问题描述 投票:0回答:2

我有scrollIntoView()功能的问题。我有一棵树和两个按钮:

  1. 其中第一个将滚动到底部节点
  2. 第二个将树滚动到顶部节点

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

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位于树的顶部

有任何想法吗?我试图通过scrollIntoView()操纵这个options函数,但要么我做错了,要么它不能像我期望的那样工作。


编辑:我不明白为什么有人给我减去这个问题。我做了一个研究,我试图自己解决这个问题,并清楚地描述了我的问题。这太刺激了。


编辑2:我没有这些节点的ID。我只有节点作为Fancytree.FancytreeNode对象,所以我需要一个没有对节点id进行操作的解决方案。


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

javascript jquery scroll fancytree
2个回答
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;
    }

0
投票

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

function expandAndScrollTo(node) {
       node.setExpanded(true).then(()=>{
       node.span.scrollIntoView({behavior:'smooth', inline:'start'});
  });}
© www.soinside.com 2019 - 2024. All rights reserved.