当我声明的变量不等于0时,为什么我的变量变为0?

时间:2017-04-04 11:01:32

标签: javascript html variables alert scrolltop

好的,我的目标是首先计算页面顶部与查看器所在页面部分之间的距离,因此基本上是查看器无法看到的页面顶部的部分,以像素为单位的距离这个区域(只有垂直)。

这样当他们进入另一页时:

“function codeAddress(){$(”html,body“)。animate({scrollTop:” scrollTop “});}”

,将它们向下滚动它们在前一个html页面上向下滚动的像素数量,并且该距离将存储在“scrollTop”变量中。

但是由于它无法正常工作,我想测试“scrollTop”变量给出的值,并且alert(scrollTop)给我的值为'0'。但是当我使用alert(...),然后......我给完全'='“scrollTop = ...”后面的内容我得到正确的值。事实证明,变量的值变为0,而'='后面的所有值的值不等于0.

我无法想象我没有看到什么,任何人有任何线索?

这是一个带有我整个页面的JSFiddle,中间有一个按钮,在我的页面中它为第二个警报提供了'0'值,而在Fiddle中它给'und​​efined'仍然很奇怪..

https://jsfiddle.net/56sb4gty/

MAX_BONES

1 个答案:

答案 0 :(得分:0)

正如adeneo所说,你试图滚动到一个名为“scrollTop”的字符串,它没有任何意义,它应该是scrollTop: SOME_NUMBER

我假设您保存去抖动滚动事件的最后位置,或导航点击并将其保存到session / localStorage。

然后在新页面上滚动到该位置。像...这样的东西。

document.addEventListener('DOMContentLoaded', function() {
  try {
    // On load see if there is a scroll pos and go there.
    var lastYPos = +localStorage.getItem('scrollYPos');
    if (lastYPos) {
      console.log('Setting scroll pos to:', lastYPos);
      window.scrollTo(0, lastYPos);
    }

    // On navigation click or debounced resize event..
    someResizeOrClickEvent(() => localStorage.setItem('scrollYPos', window.scrollY));
  } catch (error) {
    // This will happen in Safari private browsing when accessing localStorage
    console.error(error);
  }
});