2010-12-27 9 views
2

Vor einer Weile brauchte ich ein Skript, um einige Inhalte jede Woche zu aktualisieren, und meine Frage wurde in this forum beantwortet.jQuery: Woche des Jahres Skript agieren

-

Nun, ich bin kein jQuery Profi wie Sie :), aber das „Problem“ ist, dass ich heute (der Moment von diesem Post) ist es Woche # 52 aber das Skript wasn Es funktioniert nicht, es zeigte nicht den Inhalt für Woche # 52, also änderte ich meinen HTML zu Woche # 53, und es funktionierte.

Das "Problem" ist, dass es keine Woche # 53 gibt, also habe ich Angst, dass ich meinen HTML ändern muss, um für Woche # 54, # 56, # 57 und so weiter zu zählen, wenn diese Wochen existieren nicht.

Hier ist ein Auszug aus dem HTML (die Struktur über die Wochen wiederholt, Inhaltsänderungen natürlich):

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

Script:

<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> 

Jede Idee, was los ist auf?

Vielen Dank für jede Hilfe zu diesem Thema.

+1

Möchten Sie die Woche basierend darauf, wie viele "Sonntage" gab es? Oder möchten Sie es basierend auf wie viele 7 Tage seit dem ersten Tag des Jahres? – user113716

+0

Ein Jahr ist 1-2 Tage länger als 52 Wochen. Also, ja, Sie werden 53 Wochen haben, es sei denn, Ihr Code ist schlau genug, um das Ende des Jahres als Teil der ersten Woche des folgenden Jahres zu betrachten. – Powerlord

Antwort

7

EDIT: Das Skript, das Sie verwenden, betrachtet eine "Woche" als Sonntag - Samstag. Da ein Jahr nicht immer an einem Sonntag beginnt, wird die erste Teilwoche als Woche 1 betrachtet.

Wenn Sie nur 7 Zeiträume seit dem ersten des Jahres möchten, verwenden Sie das folgende Skript. Wenn Sie möchten, dass es auf Sonntag basiert, dann wäre das Skript, das Sie verwenden, korrekt.


Es gibt eine Woche #53. Es ist nur keine ganze Woche.

Aber wir sind in der Woche 52. Ich schätze, das aktuelle Skript berücksichtigt keine Schaltjahre.

Stattdessen können Sie den Tag dieses Jahres berechnen und Kluft, die durch 7.

Beispiel: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> 

Sie noch ein Ergebnis von 53 am letzten Tag bekommen des Jahres (oder der letzten zwei Tage in einem Schaltjahr).

EDIT: Ein Offset von 1 auf der dayOfYear wurde behoben.

+0

Wird es Anfang nächsten Jahres noch Probleme geben? Nach dem 1. Januar bist du zurück in der 1. Woche. Y2K nochmal, Mann!Im Ernst, ich schlage vor, 2010 in die onejan-Variable zu überführen. d.h. var onejan = neues Datum (2010,0,1); – ptpaterson

+0

Und der Code aus dem Beispiel hat 1. Januar die Woche in zwei geteilt? Ich denke, das ist unnötig für das, was Sie tun. Aber Patrick's Code behebt das. – ptpaterson

+0

patrick, danke für deine antwort. Ich habe versucht, den Code, aber es hat nicht funktioniert, es zeigt nicht meine Referenzen/Zitate. Muss ich auch etwas in meiner jQuery-Funktion ändern? Tut mir leid, ich bin neu in diesem Bereich. Danke noch einmal. Nur FYI, die Idee ist, dieses Skript auch nächstes Jahr zu verwenden, und so weiter. –

Verwandte Themen