Javascript 页面处于Y位置时开始计数

Javascript 页面处于Y位置时开始计数,javascript,position,counter,Javascript,Position,Counter,我对柜台有问题。 我想要这样的页面: 我有我的职责: function count(id, start, end, duration) { var obj = document.getElementById(id); var range = end - start; var minTimer = 50; var stepTime = Math.abs(Math.floor(duration / range)); stepTime = Math.max(s

我对柜台有问题。 我想要这样的页面:

我有我的职责:

function count(id, start, end, duration) {
    var obj = document.getElementById(id);
    var range = end - start;
    var minTimer = 50;
    var stepTime = Math.abs(Math.floor(duration / range));
    stepTime = Math.max(stepTime, minTimer);
    var startTime = new Date().getTime();
    var endTime = startTime + duration;
    var timer;
    function run() {
        var now = new Date().getTime();
        var remaining = Math.max((endTime - now) / duration, 0);
        var spanclass = Math.round(end - (remaining * range));
        obj.innerHTML = spanclass;
        if (spanclass == end) {
            clearInterval(timer);
        }
    }

    timer = setInterval(run, stepTime);
    run();
}
count("spanclass", 1, 648, 2000);
加载页面时此脚本开始计数。例如,当页面位于
“y”
位置或
“底部”
位置时,我需要启动此函数

我需要在页面处于“y”位置时启动此功能

然后需要在
scroll
事件上调用函数处理程序

document.addEventListener('scroll', function(){
  // inside this handler check if it reached y and eventually call your function
   if (window.scrollY > 444)
     yourFunction()
})

下面是一个例子:

函数计数(id、开始、结束、持续时间){
var obj=document.getElementById(id);
var范围=结束-开始;
var minTimer=50;
var stepTime=数学绝对值(数学下限(持续时间/范围));
步长时间=数学最大值(步长时间,最小定时器);
var startTime=new Date().getTime();
var endTime=开始时间+持续时间;
无功定时器;
函数运行(){
var now=new Date().getTime();
剩余var=Math.max((endTime-now)/duration,0);
var spanclass=数学四舍五入(结束-(剩余*范围));
obj.innerHTML=spanclass;
如果(spanclass==end){
清除间隔(计时器);
}
}
定时器=设置间隔(运行、步进时间);
run();
}
document.addEventListener('scroll',handler)
函数处理程序(){
如果(window.scrollY<900)
返回
计数(“spanclass”,164820000)
document.removeEventListener('scroll',handler)
}
正文{
高度:2000px
}
跨度{
显示:块;
利润上限:1000px
}

hei
如果要在页面位于Y位置时执行函数,可以尝试在页面位于Y位置时执行函数,如下所示:

function count(id, start, end, duration) {
var obj = document.getElementById(id);
var range = end - start;
var minTimer = 50;
var stepTime = Math.abs(Math.floor(duration / range));
stepTime = Math.max(stepTime, minTimer);
var startTime = new Date().getTime();
var endTime = startTime + duration;
var timer;
function run() {
    var now = new Date().getTime();
    var remaining = Math.max((endTime - now) / duration, 0);
    var spanclass = Math.round(end - (remaining * range));
    obj.innerHTML = spanclass;
    if (spanclass == end) {
        clearInterval(timer);
    }
}

timer = setInterval(run, stepTime);
if (scrollY >= 500){
      run();
  }
}
count("spanclass", 1, 648, 2000);

您可能想要收听该活动。仍然不知道如何进行此操作。它需要编辑,同时发布了答案1,这是正确的,因此我没有费心编辑我的答案:)。我对答案1投了赞成票,如果答案1解决了你的问题,你应该选择它作为解决方案。