2010-12-27 13 views
2

私は毎週コンテンツを更新するためのスクリプトが必要でしたが、私の質問はthis forumで回答されました。jQuery:week of yearスクリプトの実行

-

、と私は:)あなたのようなjQueryのプロではないんだけど、「問題」私は持っているが、今日(この記事の時点)で、それは週#52ですが、スクリプトはwasn週に#52のコンテンツを表示していなかったので、HTMLを週#53に変更しました。

「問題」は、週53日目がないことです。そのため、#54、#56、#57などの週にカウントを続けるためにHTMLを変更する必要があります。週は存在しません。

は、ここでHTMLのエキスです(構造は週間にわたって繰り返され、もちろんの内容の変更):

<div class="quotes-container quote-53"> 
<div class="quote">Quote here...</div> 
<div class="author">&mdash; Author </div> 
</div> 

スクリプト:

<script type="text/javascript"> 
Date.prototype.getWeek = function() { 
var onejan = new Date(this.getFullYear(),0,1); 
return Math.ceil((((this - onejan)/86400000) + onejan.getDay()+1)/7); 
} 

jQuery(function(){ 
var today = new Date(); 
var weekno = today.getWeek(); 
jQuery('#quotes-wrapper').load('/common/testimonials.html div.quote-'+weekno); 
}); 
</script> 

何が起こっているのかすべてのアイデアに?

ありがとうございました。

+1

「日曜日」の数に基づいて週を設定しますか?または、その年の最初の日から7日間の期間を基準にして欲しいですか? – user113716

+0

1年は52週より1〜2日長くなります。だから、あなたのコードが翌年の第1週の一環として今年の終わりを考えるのに十分スマートでない限り、あなたは53週間を過ごすでしょう。 – Powerlord

答えて

7

編集:使用しているスクリプトでは、「週」は日曜日から土曜日とみなされます。 1年は必ずしも日曜日に開始するとは限らないため、最初の部分週を1週とみなします。

年初から7つの期間が必要な場合は、以下のスクリプトを使用します。あなたが日曜日に基づいてそれをしたいなら、あなたが使っているスクリプトは正しいでしょう。


#53があります。一週間ではありません。

しかし、今週は52です。 私は、現在のスクリプトがうるう年を考慮していないと推測しています。

代わりにあなたが今年の日を計算し、実施例7

でいることを分割することができます:http://jsfiddle.net/etTS2/2/

<script type="text/javascript"> 

    Date.prototype.getWeek = function() { 
     var onejan = new Date(this.getFullYear(),0,1); 
     var today = new Date(this.getFullYear(),this.getMonth(),this.getDate()); 
     var dayOfYear = ((today - onejan +1)/86400000); 
     return Math.ceil(dayOfYear/7) 
    }; 


    jQuery(function(){ 
    var today = new Date(); 
    var weekno = today.getWeek(); 
    jQuery('#quotes-wrapper').load('/common/testimonials.html div.quote-'+weekno); 
    }); 

</script> 

あなたはまだ最後の日に53の結果を得るでしょう(またはうるう年の最後の2日間)。

EDIT:dayOfYearのオフセットは1です。

+0

来年の初めにまだ問題はありませんか? 1月1日の後、1週目に戻ります。真剣に、しかし、私はちょうどonejan変数に2010年hardingをお勧めします。すなわち、var onejan = new Date(2010,0,1); – ptpaterson

+0

そして、このコードの例では、1週に2つの週が分割されていますか?私はあなたがしていることには不必要だと思います。しかしパトリックのコードはそれを修正する。 – ptpaterson

+0

パトリック、あなたの答えをありがとう。私はコードを試みたが、それは動作しませんでした、それは私の功績/引用符を表示していません。 jQuery関数で何かを変更する必要がありますか?申し訳ありませんが、私はこれに新しいです。再度、感謝します。ちょうど、私の考えは、来年もこのスクリプトを使い続けることです。 –

関連する問題