Все теже events
вот туплю....
есть массив, который я передаю как параметр в конструктор объекта. buttons : { "Ok" : function(){ console.log("Ok"); this.action(); }, "Cancel" : function(){ console.log("Cancel"); this.action(); } } в объекте есть функция: this.action = function(){ events.beforeAction(self); console.log("action"); events.afterAction(self); } в объекте , есть кусок кода, который создает кнопки, в данном случае 2 for (i in buttons) { var bName = i; var bClick = buttons[i]; var b = document.createElement("button"); b.textContent = bName; b.addEventListener('click', function(){bClick.call(self)}, false); /*b.onclick = function(event){ return bClick.call(self); }*/ //b.onclick = bClick; document.body.appendChild(b); } так вот. Для баттанов добавляется всегда последний переданный в массиве метод. Ткните лицом, где туплю. |
да.... забыл сказать
b.onclick = bClick; работает как надо. Но она не передает this. А мне он оч. нужен. |
Цитата:
|
спасибо... .разобрался.... вопрос снят
|
Цитата:
Насчет "блоков" и "замыканий" тоже не понял. Вот каноничный кот: var elems = obj.getElementsByTagName('img'); images = []; for(var i=0; i<elems.length; i++) { var elem = elems[i].parentNode; if(elem && elem.nodeName == 'A') { elem.index = images_length; elem.addEventListener("click", load_image, false); images[images_length++] = elem; } } Развешивается и щелкает как доктор прописал. |
Часовой пояс GMT +3, время: 18:22. |