Все теже 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:56. |