現在、 Timeframe.jsという JS スクリプトをPrototype javascriptフレームワークで使用して、カレンダー ウィジェットを作成しています。私のローカル コピーでは問題なく動作しますが、ステージング環境では次の JavaScript エラーが発生します。
TypeError: this.element.down(...) は未定義です
this.element.down('div#' + this.element.id + '_container').insert(calendar);
エラーは、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 から欠落していません。
この問題の原因を特定できませんでした。Prototype と Timeframe の最新バージョンを使用していることを確認しましたが、それでもエラーが発生します。私はこの方法でこれらのスクリプトをしばらく使用してきましたが、これまでにこれに遭遇したことはありません。誰かが私を正しい軌道に乗せることができますか?