Приветствую всех! Я пытаюсь выучить классы Mootools. Я создал этот класс, чтобы добавить div на страницу.
var F = new Class({
Implements: [Options, Events],
options: {
container: document.body,
width: '250px',
background: '#ccc'
},
initialize: function(options) {
this.setOptions(options);
this.addDemoDiv();
},
addDemoDiv: function() {
var dDiv = new Element('div', {
'class': 'myClass',
html: 'Click me!',
styles: {
padding: '20px',
border: '1px solid #999',
width: this.options.width,
background: this.options.background
},
events: {
click: this.animate
}
});
dDiv.inject(this.options.container);
},
animate: function() {
alert('Hello world');
}
});
window.addEvent('domready', function() {
var item = new F();
});
Предполагается, что пользователь должен указать контейнер, в который будет вставляться div, а тело документа будет использоваться по умолчанию. Когда я делаю это, как описано выше, код проверяет OK, но сценарию не удается добавить div - Firebug и Chrome жалуются на то, что контейнер нулевой или неопределенный.
Я должен изменить dDiv.inject(this.options.container);
на это
if (!this.container) {
dDiv.inject(document.body);
} else {
dDiv.inject(this.container);
}
чтобы все заработало.
Может ли какой-нибудь мудрый ниндзя Mootools сказать мне, почему инъекция работает, когда я передаю document.body напрямую, но прерывается, когда я пытаюсь передать ему ссылку на document.body, предположительно хранящуюся в опции контейнера класса? Я пробовал варианты для document.body, такие как «document.body» и $$ («document.body») и $$ (document.body).