美文网首页
setInterval 调用方法未定义问题

setInterval 调用方法未定义问题

作者: jing_bao | 来源:发表于2018-09-21 17:50 被阅读0次

若setInterval要调用的方法写在window.onload匿名方法内,执行setInterval会报方法未定义错误。
解决办法:将方法放到window.onload匿名方法外部或直接setInterval直接调用一个匿名函数
例:

如下代码会报updategetYMDhms方法没有定义的错误

window.onload = function() {
                var start = '2018/09/09 8:0:0';
                var end = '2018/09/29 8:0:0'
                var count = 0;
                function updategetYMDhms(start, end) {
                    count += 1;
                    var date1 = new Date(start);
                    var date2 = new Date(end);
                    var s1 = date1.getTime();
                    var s2 = date2.getTime();
                    var total = (s2 - s1) / 1000 - count;
                    var day = parseInt(total / (24 * 60 * 60)); //计算整数天数
                    var afterDay = total - day * 24 * 60 * 60; //取得算出天数后剩余的秒数
                    var hour = parseInt(afterDay / (60 * 60)); //计算整数小时数
                    var afterHour = total - day * 24 * 60 * 60 - hour * 60 * 60; //取得算出小时数后剩余的秒数
                    var min = parseInt(afterHour / 60); //计算整数分
                    var afterMin = total - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60;
                    $('.underlineTime').text(day + ' 天 ' + hour + ' 时 ' + min + ' 分 ' + afterMin + ' 秒');
                }
                updategetYMDhms('2018/09/09 8:0:0', '2018/09/29 8:0:0')
                setInterval("updategetYMDhms(start,end)", 1000)
}

解决方法:

把方法放到window.onload匿名方法外

                var start = '2018/09/09 8:0:0';
                var end = '2018/09/29 8:0:0'
                var count = 0;
                function updategetYMDhms(start, end) {
                    count += 1;
                    var date1 = new Date(start);
                    var date2 = new Date(end);
                    var s1 = date1.getTime();
                    var s2 = date2.getTime();
                    var total = (s2 - s1) / 1000 - count;
                    var day = parseInt(total / (24 * 60 * 60)); //计算整数天数
                    var afterDay = total - day * 24 * 60 * 60; //取得算出天数后剩余的秒数
                    var hour = parseInt(afterDay / (60 * 60)); //计算整数小时数
                    var afterHour = total - day * 24 * 60 * 60 - hour * 60 * 60; //取得算出小时数后剩余的秒数
                    var min = parseInt(afterHour / 60); //计算整数分
                    var afterMin = total - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60;
                    $('.underlineTime').text(day + ' 天 ' + hour + ' 时 ' + min + ' 分 ' + afterMin + ' 秒');
                }
            window.onload = function() {
                updategetYMDhms('2018/09/09 8:0:0', '2018/09/29 8:0:0')
                setInterval("updategetYMDhms(start,end)", 1000)
}

或者直接执行一个匿名函数

window.onload = function() {
                setInterval(function() {
                    count += 1;
                    var date1 = new Date(start);
                    var date2 = new Date(end);
                    var s1 = date1.getTime();
                    var s2 = date2.getTime();
                    var total = (s2 - s1) / 1000 - count;
                    var day = parseInt(total / (24 * 60 * 60)); //计算整数天数
                    var afterDay = total - day * 24 * 60 * 60; //取得算出天数后剩余的秒数
                    var hour = parseInt(afterDay / (60 * 60)); //计算整数小时数
                    var afterHour = total - day * 24 * 60 * 60 - hour * 60 * 60; //取得算出小时数后剩余的秒数
                    var min = parseInt(afterHour / 60); //计算整数分
                    var afterMin = total - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60;
                    $('.underlineTime').text(day + ' 天 ' + hour + ' 时 ' + min + ' 分 ' + afterMin + ' 秒');
                }, 1000);
            }

相关文章

  • setInterval 调用方法未定义问题

    若setInterval要调用的方法写在window.onload匿名方法内,执行setInterval会报方法未...

  • setInterval() 和setTimeout()

    一、setInterval() 方法: 示例: 注意:setInterval() 方法会不停地调用函数,直到 cl...

  • 计时器(2018-05-18)

    牛客网链接 setInterval() 方法 setInterval() 方法会按照指定周期不停地调用函数,直到 ...

  • js 中的定时器setInterval

    setInterval 定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表...

  • setInterval函数使用方法及小例

    setInterval含义 1、setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式...

  • setInterval改写成setTimeout

    问题:setInterval 原始的用法,在调用的时候只读了一次,不便于改速度。办法:把setInterval改写...

  • BOM编程

    window对象方法: setInterval() 每经过指定毫秒值后就会执行指定的代码。一调用此方法...

  • JS案例17-JS定时器

    JS定时器有两种方法。 setInterval() :循环调用函数或计算表达式。方法会不停地调用函数,直到 cle...

  • React 列表向上、向下循环滚动

    实现的效果: 实现步骤 开始滚动:setInterval() 定时调用滚动方法停止滚动:clearInterval...

  • 使用async + while 替代setInterval

    setInterval 的弊端 setInterval 对自己调用的代码是否报错漠不关心。即使调用的代码报错了,它...

网友评论

      本文标题:setInterval 调用方法未定义问题

      本文链接:https://www.haomeiwen.com/subject/cfdznftx.html