var _this = this;
el.onmouseover = (function(e) {return method_el(_this);});
JavaScript document.createElement. Обработчики событий.
Стоит следующая задача. Необходимо динамически создавать Element'ы, но чтобы у них были обработчики событий на onmouseover.
Причём функция обработчик имеет аргумент this. Пробовал так:
var el=document.createElement("div");
el.className="class1";
el.onmouseover=method_el(this);
Но далее при вызове этого обработчика происходит ошибка. В этой функции-обработчики вывзвается свойство style у объекта аргумента. И в этом месте происходит ошибка, пишет, что такого свойства нет. Что не так?
var el=document.createElement("div");
el.className="class1";
el.setAttribute("onmouseover", "method_el(this)");
Но это работает везде кроме Explorer :)
Код:
Цитата: Dimarik
var el=document.createElement("div");
el.className="class1";
el.onmouseover=method_el(this);
Согдасно DOM API метод createElement лишь создает элемент. Но в дерево документа он не добавляется. А добавлять его следует методом appendChild.
Т.е. в конец должно быть что-то в духе
Код:
var body = documentGetElementById('body');
body.appendChild(el)
body.appendChild(el)
При этому в тега BODY аттрибут id установлен в body.
var _this = this;
el.onmouseover = (function(e) {return method_el(_this);});
Сделал так
el.onmouseover = (function(e) {return method_el(el);});
Вроде заработало везде.
Если вам нужно в method_el получить целевой объект, то он и так там будет доступен через this, ничего передавать не нужно.