我目前正在使用带有Prototype javascript 框架的名为Timeframe.js的 JS 脚本来创建日历小部件。在我的本地副本中效果很好,但是在我的暂存环境中,我收到以下 javascript 错误:
类型错误:this.element.down(...) 未定义
this.element.down('div#' + this.element.id + '_container').insert(日历);
该错误是指 timeframe.js 库文件中的第 97 行。它是以下方法的一部分:
// Scaffolding
createCalendar: function() {
var calendar = new Element('table', {
id: this.element.id + '_calendar_' + this.calendars.length, border: 0, cellspacing: 0, cellpadding: 5
});
calendar.insert(new Element('caption'));
var head = new Element('thead');
var row = new Element('tr');
this.weekdayNames.length.times(function(column) {
var weekday = this.weekdayNames[(column + this.weekOffset) % 7];
var cell = new Element('th', { scope: 'col', abbr: weekday }).update(weekday.substring(0,3));
row.insert(cell);
}.bind(this));
head.insert(row);
calendar.insert(head);
var body = new Element('tbody');
(6).times(function(rowNumber) {
var row = new Element('tr');
this.weekdayNames.length.times(function(column) {
var cell = new Element('td');
row.insert(cell);
});
body.insert(row);
}.bind(this));
calendar.insert(body);
this.element.down('div#' + this.element.id + '_container').insert(calendar);
this.calendars.push(calendar);
this.months = this.calendars.length;
return this;
},
我还验证了 this.element.id 的内容是有效的。该值最终成为 'div#calendars_container',它是标记中存在的一个元素,因此 DOM 不会丢失它。
我一直无法确定这个问题的根源,我确保我拥有最新版本的原型和时间框架,但错误仍然存在。我已经以这种方式使用这些脚本有一段时间了,之前还没有遇到过这种情况,任何人都可以让我走上正确的轨道吗?