Getting " TypeError: triggerElement is null " error in magento on product page using calendar

Getting " TypeError: triggerElement is null " error in magento on product page using calendar

我遇到了这个错误 “ 类型错误:triggerElement 为 null

triggerElement.onclick = 函数() { “ 当我在 magento v-1.8.1.0 上安装预订模块时。

其功能使用日历。

    Calendar.setup = function(params)
{

  function param_default(name, def) {
    if (!params[name]) params[name] = def
  }

  param_default('dateField', null)
  param_default('triggerElement', null)
  param_default('parentElement', null)
  param_default('selectHandler',  null)
  param_default('closeHandler', null)

  // In-Page Calendar
  if (params.parentElement)
  {
    var calendar = new Calendar(params.parentElement)
    calendar.setSelectHandler(params.selectHandler || Calendar.defaultSelectHandler)
    if (params.dateFormat)
      calendar.setDateFormat(params.dateFormat)
    if (params.dateField) {
      calendar.setDateField(params.dateField)
      calendar.parseDate(calendar.dateField.innerHTML || calendar.dateField.value)
    }
    calendar.show()
    return calendar
  }

// 弹出式日历 // // XXX 通过创建 // 日历并将其存储在页面上,但是你会遇到问题 // 同一页面上的多个日历。

else
  {
    var triggerElement = $(params.triggerElement || params.dateField)
    triggerElement.onclick = function() { 
      var calendar = new Calendar()
      calendar.setSelectHandler(params.selectHandler || Calendar.defaultSelectHandler)
      calendar.setCloseHandler(params.closeHandler || Calendar.defaultCloseHandler)
      if (params.dateFormat)
        calendar.setDateFormat(params.dateFormat)
      if (params.dateField) {
        calendar.setDateField(params.dateField)
        calendar.parseDate(calendar.dateField.innerHTML || calendar.dateField.value)
      }
      if (params.dateField)
        Date.parseDate(calendar.dateField.value || calendar.dateField.innerHTML, calendar.dateFormat)
        calendar.showAtElement(triggerElement)
      return calendar
    }
  }

}

我在页面加载时遇到这个错误,有人可以指导我调试这个错误吗?提前致谢。

当你在函数中传递 params 时,你是否检查它包含 params.triggerElementparams.dateField,因为如果这一行

var triggerElement = $(params.triggerElement || params.dateField)

null 分配给 triggerElement 然后你会得到你得到的错误。

在此行 var triggerElement = $(params.triggerElement || params.dateField) 之后,您可以进行 null 检查并创建元素(如果在绑定点击事件之前未创建)。