javascript - Javascript 打印 45 UNDEFINED LINES
问题描述
有人可以帮助我吗?
该脚本运行良好,但是当它应该完成时,它仍然打印未定义的行:我已经尝试进行一些更改,但是没有成功......我真的不知道。
var events = [
["Blood Castle",["00:00","02:00","04:00","06:00","08:00","10:00","12:00","14:00","16:00","18:00","20:00","22:00"]],
["Chaos Castle",["01:00","03:00","05:00","07:00","09:00","11:00","13:00","15:00","17:00","19:00","21:00","23:00"]],
["Devil Square",["00:30","04:30","08:30","12:30","16:30","20:30"]],
["Illusion Temple",["01:30","05:30","09:30","13:30","17:30","21:30"]],
["CryWolf",[4,7],["20:30","20:30"]],
];
var boss = [
["White Wizard",["00:50","04:50","08:50","12:50","16:50","20:50"]],
["Golden Invasion",["12:30","13:35","15:35","16:30","17:35","19:30"]],
["Respawn Kundun",["16:00"]],
];
var eventsTime = [
];
function toSeconds(h, m, s) {
return h * 3600 + m * 60 + s;
}
function DateUTC(offset) {
var d = new Date();
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
return new Date(utc + (3600000 * offset));
}
function updateEventsTime(eventsTime, divId) {
var d = DateUTC('-2');
var time = toSeconds(d.getHours(), d.getMinutes(), d.getSeconds());
var html = '';
for (var i in eventsTime) {
var line = eventsTime[i];
if (line.length == 2 && typeof(line[1]) == 'object') {
var j;
for (j = 0; j < line[1].length; j++) {
var t = line[1][j];
t = toSeconds(t[0], t[1], 0);
if (t > time) {
break;
}
}
j = j % eventsTime[i][1].length;
var t = eventsTime[i][1][j];
var diff = toSeconds(t[0], t[1], 0) - time;
if (diff < 0) {
diff += 3600 * 24;
}
var h = parseInt(diff / 3600);
diff -= 3600 * h;
var m = parseInt(diff / 60);
var s = diff - m * 60;
var countdown = h + ':' + ("0" + m).slice(-2) + ':' + ("0" + s).slice(-2);
html += '<li class="item-3"><a href="#">' + line[0] + ': <span class="label" style="float: right;">' + countdown + '</span></a></li>';
} else if (line.length == 3) {
var week = [0, 0, 0, 0, 0, 0, 0];
var weekH = [0, 0, 0, 0, 0, 0, 0];
for (j in line[1]) {
var t = line[2][j];
t = toSeconds(t[0], t[1], 0);
week[line[1][j] - 1] = t;
weekH[line[1][j] - 1] = line[2][j];
}
var dd = d.getDay();
var total = 0;
while (1) {
if (week[dd] && ((dd == d.getDay() && week[dd] > time) || dd != d.getDay())) {
var w = ['', '', '', '', '', '', ''][dd];
if (dd == d.getDay()) {
w = '';
}
var diff = (dd * 24 * 60 * 60 + week[dd]) - (d.getDay() * 24 * 60 * 60 + time);
if (diff < 0) {
diff += 7 * 24 * 60 * 60;
}
var days = parseInt(diff / (24 * 60 * 60));
diff -= days * (24 * 60 * 60);
var h = parseInt(diff / 3600);
diff -= 3600 * h;
var m = parseInt(diff / 60);
var s = diff - m * 60;
if (days) {
count = days + 'd ' + h + 'h';
} else {
var count = h + ':' + ("0" + m).slice(-2) + ':' + ("0" + s).slice(-2);
}
html += '<li class="item-3"><a href="#">' + line[0] + ': <span class="label" style="float: right;">' + count + '</span></a></li>';
break;
}
if (total++ > 8) {
html += '<li class="item-3"><a href="#">' + line[0] + ': <span class="label" style="float: right;">7d</span></a></li>';
break;
}
dd = (dd + 1) % 7;
}
} else {
html += '<li class="item-3"><a href="#">' + line[0] + ': <span class="label" style="float: right;">' + line[1] + '</span></a></li>';
}
}
$('#' + divId).html(html);
}
setInterval(function () {
updateEventsTime(events, 'c_events');
updateEventsTime(boss, 'c_boss');
}, 1000);
以及这段代码的结果:
我在主页中也有调用该结果的 a 。有高手可以看看吗?
问候,
解决方案
尝试确保该成员是有效的对象成员:
for (var i in eventsTime){
if(eventsTime.hasOwnProperty(i)) {
...
根据我的经验,这是看到意外迭代的最常见原因。
推荐阅读
- token - Keycloak 网守更新令牌但不将其添加到请求中
- javascript - 缺少 /node_modules/fibers/bin/linux-x64-v8-7.6/fibers.node `。尝试重新安装“node-fibers”?
- heroku - 如何使用自定义 SSL 正确链接 Heroku、CloudFront、Route53?
- delphi - 如何将 Delphi OleVariant 内容转储到文件中?
- flutter - firebase_crashlytics - 是什么触发了报告的上传?
- javascript - 为什么为输入设置值在 Whatsapp 上不起作用?
- nuget - NuGet v4 contentFiles 没有被复制到输出
- python - 具有 epsilon-greedy 策略的 n 臂老虎机
- wordpress - 按字母组分组名称 - Twig、ACF
- powershell - 我需要编写脚本来每周自动更改服务器上的 IP 地址,并将最后一个八位字节加一