使用日历在产品页面上的magento中获取“TypeError:triggerElement is null”错误

时间:2015-01-13 07:10:35

标签: javascript magento calendar prototype

我正面临这个错误 " TypeError:triggerElement为null

triggerElement.onclick = function(){ "  当我在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
  }

// Popup Calendars   //   // 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
    }
  }

}

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

1 个答案:

答案 0 :(得分:1)

当你在函数中通过params时,你确定它包含params.triggerElementparams.dateField,因为如果这行

  

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

null分配给triggerElement,然后您将收到错误消息。

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