Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery滚动到可滚动div循环中元素的顶部_Javascript_Jquery - Fatal编程技术网

Javascript jQuery滚动到可滚动div循环中元素的顶部

Javascript jQuery滚动到可滚动div循环中元素的顶部,javascript,jquery,Javascript,Jquery,我正忙着建立一个页面,在那里,比赛的计分室将能够看到现场结果,因为评委们会为每个参赛作品打分 除此之外,每10秒检查一次更新,还有一个功能,用于检查舞台上标记为绿色的当前条目,这将滚动计分室的块以始终在页面顶部显示当前条目 然而,这会创建一个无止境的循环,在整个时间内上下滚动 初始滚动工作正常,但由于当前项的位置已更改,jQuery再次向下滚动,使该项现在处于新的偏移量 我的代码当前如下所示: $.fn.scrollView = function () { var parentDiv

我正忙着建立一个页面,在那里,比赛的计分室将能够看到现场结果,因为评委们会为每个参赛作品打分

除此之外,每10秒检查一次更新,还有一个功能,用于检查舞台上标记为绿色的当前条目,这将滚动计分室的块以始终在页面顶部显示当前条目

然而,这会创建一个无止境的循环,在整个时间内上下滚动

初始滚动工作正常,但由于当前项的位置已更改,jQuery再次向下滚动,使该项现在处于新的偏移量

我的代码当前如下所示:

$.fn.scrollView = function () {

    var parentDiv = $('.current_section');
    var innerListItem = $(this);
    var offset = 140;

    //check if sure scrolled more than 10 seconds ago
    var new_time = new Date();
    var old_time = new Date(last_scrolled);

    if (new_time - old_time > 10000 || last_scrolled == '') {
        $('.current_section').animate({
      scrollTop: parentDiv.scrollTop() + innerListItem.position().top - offset
    }, 1000);
  }
}
这将在需要时调用函数:

$('#entry_'+curr_entry).scrollView();
执行实际滚动的功能:

$.fn.scrollView = function () {
     var item_top = $(this).offset().top;
     var offset = item_top - 100;

     //check if sure scrolled more than 10 seconds ago
     var new_time = new Date();
     var old_time = new Date(last_scrolled);

     if (new_time - old_time > 10000 || last_scrolled == '') {
         $('.current_section').animate({
         scrollTop: offset
     }, 1000);
 }
使用新的\u时间和旧的\u时间,这样当用户手动滚动时,此功能不会自动滚动10秒以上。 这一部分是有效的,因此可以忽略这一点

可滚动元素的初始大小非常小:

我尝试使用.position而不是.offset,但得到了相同的结果

我还尝试使用获取包含div的当前滚动位置

$('.current_section').animate.scrollTop();
然后使用舞台上当前条目的当前位置来计算正确的滚动点,但无济于事

理想情况下,当自动滚动时,我希望滚动项位于包含div的顶部的位置100

当时的想法是,这将在活动中出现在电视或大屏幕上,只用于监控分数,以检查一切是否正常,这就是为什么必须自动滚动的原因

如果我错过了一些简单的东西,请告诉我


提前谢谢。

我设法使它工作正常

我使用此线程中的答案帮助获得最终工作代码:

我的最终代码如下所示:

$.fn.scrollView = function () {

    var parentDiv = $('.current_section');
    var innerListItem = $(this);
    var offset = 140;

    //check if sure scrolled more than 10 seconds ago
    var new_time = new Date();
    var old_time = new Date(last_scrolled);

    if (new_time - old_time > 10000 || last_scrolled == '') {
        $('.current_section').animate({
      scrollTop: parentDiv.scrollTop() + innerListItem.position().top - offset
    }, 1000);
  }
}

希望这能帮助任何有类似问题的人。

为什么不留下理由就投否决票?