setInterval 调用方法未定义问题

2018-09-21  本文已影响0人  jing_bao

若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);
            }
上一篇 下一篇

猜你喜欢

热点阅读