无法使用日历读取未定义的属性“拆分”

时间:2018-10-06 08:17:59

标签: javascript arrays split calendar

我正在使用项目中的js处理日历,以确保其正常工作。但是当我有一条开始日期等于结束日期的记录时。 用于将事件添加到我的日历中,我正在使用此推:

listDate.push({startDate :strDate, endDate : enDate});

在我的脚本datetimepicker中,这是函数isAvailable

isAvailable: function(date, month, year) {
      for (var i in this.unavailable) {
         var book_date = this.unavailable[i].startDate.split("-");
          if (book_date.length !== 3) {
             return false;
          } else if (
              (book_date[0] == "*" || book_date[0] - year === 0) &&
              (book_date[1] == "*" || book_date[1] - month === 0) &&
              (book_date[2] == "*" || book_date[2] - date === 0)
          ) {
              return false;
          }
       }
       return true;
    }

我遇到以下问题:Cannot read property 'split' of undefined in this line

  var book_date = this.unavailable[i].startDate.split("-");

请帮助您

3 个答案:

答案 0 :(得分:0)

List(Right(3), Left("error x"), Right(7)).partitionMap(identity) // (List[String], List[Int]) = (List(error x), List(3, 7)) 未定义。 this.unavailable[i].startDate引用了listDate还是其他数组?放置断点或使用this.unavailableconsole.log函数中检查this.unavailable的内容。

答案 1 :(得分:0)

代码在控制台中没有给我任何错误。您是否可以尝试将unavailable的值存储在单独的变量中,而改用该变量。这可能会有帮助。

isAvailable: function(date, month, year) {
  var unavailable = this.unavailable;
  for (var i in unavailable) {
     var book_date = unavailable[i].startDate.split("-");
      if (book_date.length !== 3) {
         return false;
      } else if (
          (book_date[0] == "*" || book_date[0] - year === 0) &&
          (book_date[1] == "*" || book_date[1] - month === 0) &&
          (book_date[2] == "*" || book_date[2] - date === 0)
      ) {
          return false;
      }
   }
   return true;
}

答案 2 :(得分:0)

您正在使用for in循环遍历数组-for in循环仅应在对象上使用。您应该使用普通的for循环或forEach

isAvailable: function(date, month, year) {
  for (var i = 0; i < this.unavailable.length; i++) {
     var book_date = this.unavailable[i].startDate.split("-");
      if (book_date.length !== 3) {
         return false;
      } else if (
          (book_date[0] == "*" || book_date[0] - year === 0) &&
          (book_date[1] == "*" || book_date[1] - month === 0) &&
          (book_date[2] == "*" || book_date[2] - date === 0)
      ) {
          return false;
      }
   }
   return true;
}