el-table 如何实现自动滚动,为什么0+1赋值后结果是0.6666666865348816?

// 获取表格滚动区域的dom
const scrollDom = tableRef.value.$refs.bodyWrapper.getElementsByClassName('el-scrollbar__wrap')[0];
timer = setInterval(() => {
if (status && props.listData.length > 0) {
  // 设置每次滚动的像素
  scrollDom.scrollTop = scrollDom.scrollTop + step.value;
  console.log(scrollDom.scrollTop);
  // 当滚动到底部时修改scrollTop回到顶部
  if (scrollDom.scrollHeight - (scrollDom.clientHeight + scrollDom.scrollTop) < 1) {
    scrollDom.scrollTop = 0;
  }
}
}, 15);

image.png
image.png
image.png

如图:
scrollDom.scrollTop = 0;step.value = 1;
为什么相加后赋值结果是0.6666666865348816
已经排除精度丢失的原因,还能是因为什么呢

阅读 1k
1 个回答

step的赋值逻辑没看到
scrollTop取的是dom元素垂直方向滚动距离,
0 + 1没有误差,那只可能是 + 1的时候scrollTop不是0
对scrollTop取值可以做个取整操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题