Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Генерация функций. (https://javascript.ru/forum/misc/33938-generaciya-funkcijj.html)

Euler 14.12.2012 15:53

Генерация функций.
 
Доброго времени суток, подскажите пожалуйста как решить следующую проблему:
Нужно пройтись в цикле по массиву кнопок и заставить их, при щелчке, менять заголовок окна на свой порядковый номер в массиве.
Очевидный, но не рабочий код:
var Buttons = document.getElementsByClassName("MyButton");
for(i=0; i<Buttons.length; i++)
{
	Buttons[i].onclick = function(){document.title = i};
}

дело в том, что document.title должен быть равен значению переменной i в момент создания функции, а не в момент её выполнения.

ruslan_mart 14.12.2012 15:56

Может лучше использовать document.getElementsByTagName('title')[0].innerHTML = i;

Euler 14.12.2012 16:04

Цитата:

Сообщение от Ruslan_xDD (Сообщение 221320)
Может лучше использовать document.getElementsByTagName('title')[0].innerHTML = i;

А в чём разница? Опять присвоено будет значение переменной i в момент нажатия на кнопку, а этой переменной к тому времени давно уже не будет.

Sanda 14.12.2012 16:31

Почитайте про замыкания.
buttons[i].onclick = (function(arg) {
  return function () {
    document.title = arg;
  }
}(i));

Euler 14.12.2012 16:51

Sanda, спасибо!


Часовой пояс GMT +3, время: 00:55.