首页 > 解决方案 > 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 。有高手可以看看吗?

问候,

标签: javascriptundefined

解决方案


尝试确保该成员是有效的对象成员:

for (var i in eventsTime){
   if(eventsTime.hasOwnProperty(i)) { 
      ...

根据我的经验,这是看到意外迭代的最常见原因。


推荐阅读