Переменная в цикле
Здравствуйте! Я делаю гаджет для Windows Sidebar. Что-то вроде календаря. И я хочу чтобы с помошью JS в код добавлялись 6 кнопочек, при нажатии на каждую из которых страница прокручивалась на опеределёный день (за это отвечает функция scrolling). Если я задаю параметр функции вручную, всё работает, НО для экономии места желательно это сделать через цикл, т. к. этот код подгружается с инета. Ниже мой вариант кода, но при нажатии на любую из кнопочек страница вообще уезжает непонятно куда :( . Я думаю, что во время вызова функции scrolling, в переменной dw стоит какое-то неадекватное число. Кто что может, подскажите, а то я замучался с этой проблемой.
for (dw=0; dw<6; dw++) { var parent = document.getElementsByTagName('body')[0]; var el = document.createElement('div'); el.id = 'day'; el.style.background = '#c53757'; el.onclick = function() {scrolling(dw);} dw++; parent.appendChild(el); } При выполнении этого цикла, |
цикл у вас 3 раза проходит, dw лишний раз в теле цикла итерируется
|
в http://learn.javascript.ru/ , или поиск по сайту .3й за последние 3 дня с этим вопросом
|
Цитата:
Цитата:
(function(dw){el.onclick = function() {scrolling(dw);}})(dw); |
Цитата:
Цитата:
Цитата:
начните с основ языка -вы переменные объявлять не умеете dw тоже переменная |
Подставил ваш код, заработало! Благодарю за помощь! :thanks: Я только учусь, видимо невнимательно про переменные читал :(. Можно ещё один вопрос:
el.onclick = function() {scrolling(1);}у меня после долгих попыток только так получилось событие сделать. Что же неправильного в записи ниже? el.onclick = scrolling(1); В других гаджетах такая запись проходит спокойно. |
Цитата:
Цитата:
el.onclick = (function() {scrolling(dw);})(); ), вместо того, чтобы присвоить функцию, мы присваиваем результат ее выполнения. |
Понятно. Благодарю за разъяснение! :yes:
|
Часовой пояс GMT +3, время: 04:53. |