1

この質問が何度も聞かれたことは知っていますが、まだこれを理解できません。1日に7日を追加しようとしています。

ここで例を見つけました

これは機能し、期待どおりに日付に1日追加されます。

 var d = new Date(dateRange[11]);
 d.setDate(d.getDate()+1);

しかし、配列にある日付で同じことをしようとすると(最終的にはこれを繰り返します):

newDates[12] = new Date(newDates[11]);
newDates[12].setDate(newDates[11].getDate()+7);

次のエラー メッセージが表示されます。

TypeError: Cannot find function getDate in object Mon Jul 01 2013 00:00:00 GMT-0600 (MDT). 

デバッグすると、配列内の各項目のタイプは日付ではなく「配列」になります。各配列項目のデータは、デバッガーでは次のようになります。 [(new Date(1372658400000))] getDate 関数を使用するには、配列項目ではなく日付である必要があると想定しています。配列アイテムを展開すると、アイテムがネストされているため、アイテム [12][0] は日付です。別の方法で参照する必要がありますか?

その推論に従って、私はこれを試しました:

newDates[12][0] = new Date(newDates[11][0]);
newDates[12][0].setDate(newDates[11][0].getDate()+7);

しかし、上記のコードの最初の行で、次のエラーが発生します。

TypeError: Cannot set property "0.0" of undefined to "(class)@1176d9d1". 

これを機能させる方法について何か提案はありますか? ありがとう!

4

1 に答える 1

1

なぜ単純にこのようにしないのですか?

newDates[12] = new Date(newDates[11][0]);// take the relevant part of [11]
newDates[12].setDate(newDates[11][0].getDate()+7); // and make [12] a simple date object in the array

好奇心から、この配列はどこから来ているのでしょうか?

[12] に同じ構造 (配列要素内の配列) を持たせたい場合は、中間変数を使用します。

var temp = new Date(newDates[11][0]);// take the relevant part of [11]
temp.setDate(newDates[11][0].getDate()+7); // set date to desired value 
newDates[12].push([temp]);// add into [12]
于 2013-04-17T19:59:47.937 に答える