【发布时间】:2017-05-13 12:28:04
【问题描述】:
我使用一种技术,在 div 中有一个表格,以限制表格覆盖的空间并改为滚动。 表格中有复选框。这些复选框会影响表格的呈现方式。单击一个时,表格将在 div 中重新呈现。这总是会导致滚动条回到顶部,这很烦人。 因此,在我用 javascript 渲染表之后,我执行了一个 setTimeout 调用来异步调用一个函数,该函数将 scrollTop 值设置回重新渲染之前的位置。 这是有问题的代码片段:
注意:(ge() == geMaybe() == document.getElementById())
o.renderAndScroll = function() {
var eTestSection = geMaybe(o.id + '-testSection');
var scrollTop = 0;
if (eTestSection) {
scrollTop = eTestSection.scrollTop;
}
o.render();
if (eTestSection) {
setTimeout(
function() {
console.log('Scrolling from ' + ge(o.id).scrollTop + ' to ' + scrollTop);
ge(o.id).scrollTop = scrollTop;
console.log('Scrolled to ' + ge(o.id).scrollTop);
},
1000);
}
}
每次更改复选框状态时,我的控制台日志输出都是这样的:
Scrolling from 0 to 1357
Scrolled to 0
还有其他方法可以完成这项工作吗?请注意,我将超时设置为整整一秒,以确保在调用滚动代码时渲染已移动到 DOM。我主要使用 chrome,但最终需要它才能跨浏览器工作。我不使用 jQuery。如果我尝试在调试器中捕获 onscroll 事件,甚至从 onscroll 处理程序中记录内容,则当使用鼠标移动滚动条时,chrome 调试器会崩溃。
【问题讨论】:
-
您没有在从中获取它的元素上设置 scrollTop。
o可以滚动吗? -
这显然是由另一个错误引起的——我在超时函数中没有得到与原来相同的元素!!!我需要从数据库中删除这个问题。
-
你可以删除你的问题
标签: javascript html google-chrome scrolltop onscroll