我只想获取文档的scrollTop并使用此answer中的代码。但我得到的是一个'Window'对象。我已经使用IE 10,Chrome和Firefox进行了测试。 这是我的代码:
var doc = document.documentElement, body = document.body;
var left = (doc && doc.scrollLeft || body && body.scrollLeft || 0);
var top = (doc && doc.scrollTop || body && body.scrollTop || 0);
scroll = {
top: (doc && doc.scrollTop || body && body.scrollTop || 0),
left: (doc && doc.scrollLeft || body && body.scrollLeft || 0)
};
console.log(scroll.top); // return 0
console.log(top); // return object 'Window'
我认为这是一个简单的问题,但我无法弄清楚它为什么会返回一个对象。
答案 0 :(得分:3)
您的变量top
位于窗口范围内。我可以使用window.top
或window.left
来引用它。已定义window.top
的问题。 window.top
指的是层次结构中最顶层的窗口。浏览器不允许您设置该变量。
您需要将其定义为不同的变量或更改范围,以使其不与全局[window]命名空间冲突。
答案 1 :(得分:1)
可能是您的console.log
不属于var top
声明的内部范围。
当您引用top
时,您不会引用您声明的变量,而是引用window.top
:
console.log(top); // global variable `window.top`: window object
;(function(){
var top = 0;
console.log(top); // local variable `top`: 0
})();
console.log(top); // global variable `window.top`: window object