Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Проблема с массивами в Javascript

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Проблема с массивами в Javascript
Имя
Сообщение << Старые топики   Новые топики >>
Проблема с массивами в Javascript - 2008-08-05 21:38:35.203333   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var weekStartDay = Organizer.week.startDay; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;for (var iter = 0; iter &lt; times; iter++) { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;for (var dayOfWeek = 0; dayOfWeek &lt; 7; dayOfWeek++) { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; dayOfMonth = weekStartDay + dayOfWeek; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (Organizer.week.days[dayOfWeek].hasHourPeriods) { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Organizer.markElementsManager.sessionPeriods[dayOfMonth] = &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Organizer.week.days[dayOfWeek]; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; showSessionPeriods("before saving: ");&nbsp; // {1} &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Organizer.savePeriods(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; showSessionPeriods("after saving: ");&nbsp; // {2} &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; weekStartDay = weekStartDay + 7; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; showSessionPeriods("after increasing start day: ");&nbsp; // {3} &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
Organizer.markElementsManager.sessionPeriods, как и Organizer.week.days, - это массивы объектов. Каждый объект такого массива сам по себе включает в себя поле-массив listId. Функция showSessionPeriods() просто показывает все listId всех sessionPeriods. Выглядит это примерно так:
quote:


0-th day: , , , , , , , , , , , ,
1-th day: , , , , , , , , , , , ,
2-th day: , , , , , , , , , , , ,
3-th day: , , , , , , , , , , , ,
4-th day: , , sdg, asdf, asdf, saf, , , , , , ,
5-th day: , , , , , , , , , , , ,
6-th day: , , , , , , , , , , , ,


На каждой итерации должно становиться на одну строку айдишников (adg, asdf и т.п.) больше: сначала на 4-й день, затем на 11, потом на 18. А на практике получается так: после первого добавления в точке {1} появляется строка 11-ого дня, в точке {2} она всё ещё есть, а вот в точке {3} (где мы всего лишь увеличиваем значение переменной weekStartDay) строка 11-ого дня очищяется. На следующей итерации то же самое происходит и с 18-ой строкой: сначала появляется, а после увеличения независимой weekStartDay очищается.
При этом ошибка находится где-то в Organizer.savePeriods() (т.е. между точками {1} и {2}): если закоментить эту строку, то ошибка не вылазит, но без неё, естественно, нельзя.
Собственно вопрос: почему так получается и как это можно исправить, если не переписывать Organizer.savePeriods() ?
Post #: 1
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Проблема с массивами в Javascript







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.