所以我正在尝试为元素滚动条创建一个“软自动滚动”功能,基本上它的意思是调用然后为你滚动一个元素。但是正如你在下面的代码中看到的那样,我将函数封装在一个自动调用函数中,该函数将元素保存在“element”中。但是,当它首次从行else if (pos>element.scrollHeight)
返回的函数中读取变量时,元素将返回为null
'use strict';
window.onload=(function()
{
window.scrollTo=(function()
{
var element=document.getElementById('more_info'),
ease=function(pos)
{
var diff=(pos-element.scrollTop).
increment=(diff / Math.abs(diff));
if (Math.abs(diff)<1)
{
element.scrollTop=pos;
return;
}
else if (Math.abs(diff)<30)
{
element.scrollTop+=1-(increment / diff);
}
else
{
element.scrollTop+=increment*10;
}
window.setTimeout(ease,1000 / 10);
};
return function(pos)
{
if (pos<0) {pos=0;}
else if (pos>element.scrollHeight) {pos=element.scrollHeight;}
ease(pos);
};
}());
}());
我更新了代码,以便在文档加载后调用它,但是我的调试器似乎显示在window.onload之前仍然调用了var元素
答案 0 :(得分:2)
您正在立即执行onload功能。
window.onload = (function () {
...
}());
这使得函数execute 然后将返回的值赋值为onload
处理程序。这意味着它在DOM准备好之前执行。更改它以删除自我执行。
window.onload = function () {
...
};