私はサーバーとJavaScriptからフロントエンドの計算を行うためにPHPを使ってカレンダーを作成しています。サーバーからは、以下の値を使用して作業しています:今日の日付、今月の日数、今日の日の位置ある月の最初の日を見つけるために、私は値を知っている現在の日から逆算しなければなりません。このJavascriptループを実現する正しい方法は何ですか?
下記の図は、私がJavascriptで何をしようとしているかを示しています。私がposから引き離しているときに0になったときにpos変数を6に戻すのはスイッチです(forループの問題のため7です)。
問題は、ループ開始のために、5である今日現在の日付の位置がすぐに1、減算されたときとき、それは28(前のある翌日まですべきではないということです)。
遅延を挿入することで(initialPos変数を参照)、適切な値を取得できます。これは正しいとは思わない、これを行う正しい方法は何ですか?
ここでは遅延の有無による出力の比較を示します。
遅延なし::
遅延で(遅延は私がtodayPositionWeekに1を追加しなかった意味せず、及び7は、リセットPOSカウンタのため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の組み込みDateクラスを使用することはできません。それは少し基本的な/使用するのは面倒ですが、ここであなたの目的を果たすかもしれません。あるいは、ある種の整数演算(mod、floorなど)を使うことができますか? –
@ dan-man、私は何をしようとしているのかを示しました。チャートは私が達成しようとしているものです。 PHPは、今日の日付に基づいていくつかの既知の値を私に提供します。カレンダーを埋めるための値を決定しています。問題は、ループがまっすぐ進むわけではないことです。forループがどのように実行されるかによって「遅延」を追加して編集する必要があります。これは今働いています、私はそれがうんざりだと言っています、それは正しくありません。これは、 "ハック"やいたずらです。これは、今日の日付だけでなく、完全なカレンダーです。 – janicehoplin
私はまだそれを実際には得られませんが、 '(a-b)%7'のようなことをしているだけではありませんか? –