jQuery: сценарий недели года - PullRequest
2 голосов
/ 27 декабря 2010

Некоторое время назад мне нужен был скрипт для обновления контента каждую неделю, и на мой вопрос ответили в этом форуме .

-

Теперь, и я не являюсь профессионалом jQuery, как вы :), но у меня есть "проблема" в том, что сегодня (момент этого поста) это неделя № 52, но скрипт не работал, он не был t показ содержимого за неделю # 52, поэтому я изменил свой HTML на неделю # 53, и это сработало.

«Проблема» в том, что нет недели № 53, поэтому я боюсь, что мне придется изменить свой HTML-код, чтобы продолжить подсчет для недели № 54, № 56, № 57 и т. Д., Когда эти недели не существует.

Вот выдержка из 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 голосов
/ 27 декабря 2010

РЕДАКТИРОВАТЬ: Используемый сценарий считает "неделю" воскресенье - суббота.Поскольку год не всегда начинается в воскресенье, первая неполная неделя считается первой неделей.

Если вы просто хотите 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 в последний день года (или последние два дня в високосном году).

РЕДАКТИРОВАТЬ: Исправлено смещение 1 на dayOfYear.

...