跑马灯用了setInterval,越滚越快,

不能将setInterval改成settimeout,还有什么解决办法吗 

setTimeout(function(){

var wid=($("div[widgetname='REPORT6']").width()-17)+'px'; //获取报表块宽度

$("div[widgetname='REPORT6']").css('width',wid); //重置报表块宽度

var height=($("div[widgetname='REPORT6']").height()-17)+'px'; //获取报表块高度

$("div[widgetname='REPORT6']").css('height',height); //重置报表块高度

},1000);

window.flag1 = true;

var self1 = this;

//鼠标悬停,滚动停止

setInterval(function() {

$("div[widgetname='REPORT6']").find(".frozen-center").mouseover(function() {

window.flag1 = false;

});

//鼠标离开,继续滚动

$("div[widgetname=REPORT6]").find(".frozen-center").mouseleave(function() {

window.flag1 = true;

});

var old = -1;

var interval = setInterval(function() {

if (!self1.isVisible()) {

return;

}

if (window.flag1) {

currentpos1 = $("div[widgetname=REPORT6]").find(".frozen-center")[0].scrollTop;

if (currentpos1 == old && 0!=currentpos1) {

$("div[widgetname=REPORT6]").find(".frozen-center")[0].scrollTop = 0;

} else {

old = currentpos1;

//以25ms的速度每次滚动1.5PX

$("div[widgetname=REPORT6]").find(".frozen-center")[0].scrollTop = currentpos1 + 1.5;

}

}

},

100);

},

1000);

FineReport yzmFXNAH1526936 发布于 2023-3-21 14:17 (编辑于 2023-3-21 14:23)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
YmengLv5中级互助
发布于2023-3-21 14:37(编辑于 2023-3-21 15:03)

image.png

把上面这段代码改成下面这样

//鼠标悬停,滚动停止

setTimeout(function() {

$("div[widgetname='REPORT6']").on("mouseover",".frozen-center",function() {

window.flag1 = false;

});

//鼠标离开,继续滚动

$("div[widgetname=REPORT6]").on("mouseleave",".frozen-center",function() {

window.flag1 = true;

});

用on事件,这样控件值改变报表块重加载后悬浮事件还会生效

  • yzmFXNAH1526936 yzmFXNAH1526936(提问者) 如果改成SETTIMEOUT,我的报表里有条件控件,条件一改变,鼠标悬浮报表停不下来,我想让鼠标悬浮报表块时,跑马灯停止,用了setInterval可以停止,但是速度会越来越快
    2023-03-21 14:50 
  • Ymeng Ymeng 回复 yzmFXNAH1526936(提问者) 我懂了,等一下,我有办法
    2023-03-21 14:56 
  • Ymeng Ymeng 回复 yzmFXNAH1526936(提问者) 看我修改回复,第一个setInterval改为setTimeout,里面的悬浮事件用on事件
    2023-03-21 15:04 
  • yzmFXNAH1526936 yzmFXNAH1526936(提问者) 回复 Ymeng 我去,大佬大佬,我都翻遍了问答区,终于遇见能改对的了
    2023-03-21 15:12 
最佳回答
0
snrtuemcLv8专家互助
发布于2023-3-21 14:22

正常setTimeout有这个方案,你试试setInterval可不可以

解决跑马灯越来越快问题

setTimeout(function() {  

    //隐藏报表块report的滚动条

    $("div[widgetname=REPORT13]").find(".frozen-north")[0].style.overflow = "hidden"; 

    $("div[widgetname=REPORT13]").find(".frozen-center")[0].style.overflow = "hidden";  

}, 200);  

window.flag = true;  

//鼠标悬停,滚动停止    

setTimeout(function() {  

    $(".frozen-center").mouseover(function() {  

        window.flag = false;  

    });  

    //鼠标离开,继续滚动    

    $(".frozen-center").mouseleave(function() {  

        window.flag = true;  

    });  

  var old = -1; 

    // 清除定时器

    if(window.tag!=null){

    window.clearInterval(window.tag);

    }

    //调用定时器

     window.tag  = setInterval(function() {  

        if(window.flag) {  

            currentpos = $("div[widgetname=REPORT13]").find(".frozen-center")[0].scrollTop;  

            if(currentpos == old) {  

                $("div[widgetname=REPORT13]").find(".frozen-center")[0].scrollTop = 0;  

            } else {  

                old = currentpos;  

                $("div[widgetname=REPORT13]").find(".frozen-center")[0].scrollTop = currentpos + 1.5;  

            }  

        }  

    }, 50);  

}, 1000);

  • yzmFXNAH1526936 yzmFXNAH1526936(提问者) 我用个他这个,不行
    2023-03-21 14:24 
  • snrtuemc snrtuemc 回复 yzmFXNAH1526936(提问者) 额,那就没方案了,定时语句,把时间越定越快了。。
    2023-03-21 14:36 
  • 2关注人数
  • 360浏览人数
  • 最后回答于:2023-3-21 15:03
    请选择关闭问题的原因
    确定 取消
    返回顶部