Переменная в цикле
Здравствуйте! Я делаю гаджет для 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, время: 15:26. |