Я работаю над календарем, использующим PHP, чтобы получить свои даты с сервера и Javascript, чтобы выполнить математику переднего плана. С сервера я использую следующие значения для работы с: сегодняшней датой, количеством дней в текущем месяце и сегодняшней позицией в течение недели со ссылкой на соглашение Sun to Sat 0-6. Чтобы найти первый день данного месяца, мне приходится работать в обратном направлении с текущего дня с известными значениями.Каков правильный способ достижения этого цикла Javascript?
В приведенной ниже таблице показано, что я пытаюсь сделать с помощью Javascript. Переключатель - это когда я меняю переменную pos на 6 (7 из-за проблемы с циклом), когда я нажимаю 0, когда я вычитаю из pos.
Проблема заключается в том, что, когда для начала цикла, позиция сегодняшнего текущего дня, который 5, сразу вычитается 1, если оно не должно быть до следующего дня, который 28 (предыдущая).
Вставив задержки (см. Переменную initialPos), я могу получить правильное значение. Это не кажется правильным, каков правильный способ сделать это?
Проведено сравнение выходов с задержками и без них.
С задержкой:
без задержки: (без задержки означает, что я не прибавить 1 к todayPositionWeek и 7 6 для счетчика сброса поз)
<script>
today = 29;
todayPositionWeek = 5;
// start the count with todayPositionWeek shifted by 1 to not count
var initialPos = todayPositionWeek+1;
var numSwitches = 0;
var loopRan = 0;
for (var i = today; i > 0; i--) {
loopRan++;
// initialPos is 6
initialPos--;
// after it is 5 on first run
if(initialPos == 0) {
// reset pos counter
initialPos = 7;
// initially this was set to 6 but skips to 5
numSwitches++;
}
firstDayPos = initialPos;
}
alert('loop ended ' + firstDayPos + ' ' + numSwitches + ' ' + loopRan);
</script>
Сегодня это нормально, но если день отключен (сегодня нет в пятницу), сдвинутые дни выключены ...
не совсем уверен, что вы пытаетесь сделать здесь. не можете ли вы использовать встроенный класс даты javascript. Это немного основополагающее/раздражающее использование, но оно может служить вашим целям здесь. Или, может быть, вы можете просто использовать целочисленную арифметику (mod, floor и т. Д.)? –
@ dan-man, я показал, что я пытаюсь сделать, диаграмма - это то, что я пытаюсь выполнить. PHP дает мне некоторые известные значения, основанные на сегодняшней дате. Я определяю значения для заполнения календаря. Проблема в том, что цикл не прямой, мне нужно его отредактировать, добавив «задержку» из-за того, как работает цикл for. Это работает прямо сейчас, делает работу, я говорю, что это отстой, это неправильно. Это «хак» или кусок дерьма. Это полный календарь, а не только сегодняшняя дата. – janicehoplin
Я все еще не понимаю, но разве вы не просто делаете что-то вроде '(a-b)% 7'? –