我正面临这个错误 " 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
}
}
}
我在页面加载时收到此错误,有人可以指导我调试此错误吗?提前谢谢。
答案 0 :(得分:1)
当你在函数中通过params
时,你确定它包含params.triggerElement
和params.dateField
,因为如果这行
var triggerElement = $(params.triggerElement || params.dateField)
将null
分配给triggerElement
,然后您将收到错误消息。
在此行var triggerElement = $(params.triggerElement || params.dateField)
之后,您可以进行null
检查,并在绑定click事件之前创建元素(如果未创建)。