kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
var weekStartDay = Organizer.week.startDay;
for (var iter = 0; iter < times; iter++) {
for (var dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) {
dayOfMonth = weekStartDay + dayOfWeek;
if (Organizer.week.days[dayOfWeek].hasHourPeriods) {
Organizer.markElementsManager.sessionPeriods[dayOfMonth] =
Organizer.week.days[dayOfWeek];
}
}
showSessionPeriods("before saving: "); // {1}
Organizer.savePeriods();
showSessionPeriods("after saving: "); // {2}
weekStartDay = weekStartDay + 7;
showSessionPeriods("after increasing start day: "); // {3}
} 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() ?
|