Итак, я пытаюсь сделать функцию «мягкой автоматической прокрутки» для элемента и полосы прокрутки элементов, в основном ее нужно назвать, а затем прокручивать элемент для вас. Однако, как вы можете видеть в приведенном ниже коде, я инкапсулировал функцию в функцию самозапускания, которая содержит элемент в «элементе». Однако, когда он сначала считывает переменную из возвращаемой функции в строке else if (pos>element.scrollHeight)
элемент возвращается в null
«Static» удерживающий элемент удерживания переменной теряет значение
'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);
};
}());
}());
I Обновленный код так, чтобы его называли после загрузки документа, однако мой отладчик, кажется, показывает, что вар элемент все еще вызывается перед window.onload
Не могли бы вы опубликовать скрипку, чтобы воспроизвести проблему? – elclanrs
Знаете ли вы, что элемент уже существует, когда ваш код выполняется? он должен работать, когда вы инкапсулируете все это в событие ready/onload. – metadings
Что вы подразумеваете под «элементом возвращается как« null »? Значение переменной 'element' равно null в этом месте? Функция, которую вы назначаете 'window.scrollTo', не возвращает значение. Кроме того, вы, вероятно, забыли передать 'pos', чтобы« облегчить »в вызове в конце. – Palec