在使用日历的产品页面上的 magento 中获取“类型错误:触发器元素为空”错误

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

本文关键字:错误 类型错误 类型 元素 获取 触发器 日历 magento      更新时间:2023-09-26

我正面临此错误'"类型错误: 触发器元素为空

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
  }
弹出

日历 // 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检查并创建元素(如果未创建)。

相关文章: