我有scrollIntoView()
功能的问题。我有一棵树和两个按钮:
我不知道我应该做什么,这个滚动操作将始终滚动节点到树的顶部。我的意思是这个小提琴的情况:
http://jsfiddle.net/presto41/xzb62pw5/8/
如果您点击按钮#button1 (Scroll to bottom node)
,那么树将滚动到底部节点 - 但底部节点将不在树的顶部。它的工作原理是“只显示节点。完成”。
我希望滚动到底部节点将在此方案中作为滚动到顶部节点的工作:
#button1 (Scroll to bottom node)
#button2 (Scroll to top node)
有任何想法吗?我试图通过scrollIntoView()
操纵这个options函数,但要么我做错了,要么它不能像我期望的那样工作。
编辑:我不明白为什么有人给我减去这个问题。我做了一个研究,我试图自己解决这个问题,并清楚地描述了我的问题。这太刺激了。
编辑2:我没有这些节点的ID。我只有节点作为Fancytree.FancytreeNode对象,所以我需要一个没有对节点id进行操作的解决方案。
编辑3:这是我的伪代码女巫与原版最相似:http://jsfiddle.net/presto41/xzb62pw5/27/
使用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;
}
我找到了解决方案。解决方案是功能:
function expandAndScrollTo(node) {
node.setExpanded(true).then(()=>{
node.span.scrollIntoView({behavior:'smooth', inline:'start'});
});}