2010-12-27 6 views
2

얼마 전에 매주 일부 콘텐츠를 업데이트하는 스크립트가 필요했고, 내 질문에 대한 답변은 this forum입니다.jQuery : 주중 스크립트 실행

-

이제

, 내가 : 당신처럼 jQuery를 프로 아니에요,하지만 "문제"내가 가진이 오늘 (이 게시물의 순간)입니다 그것은 주 # 52입니다하지만 스크립트 년후 일하지 않으면 주 # 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 일 길다. 따라서, 코드가 53 주를 표시하게 될 것입니다. 코드가 다음 해의 1 주 중 일부로 연말을 고려할 정도로 똑똑하지 않은 경우입니다. – Powerlord

답변

7

편집 : 사용중인 스크립트는 일주일을 일요일 - 토요일로 간주합니다. 1 년이 항상 일요일에 시작하는 것은 아니기 때문에 첫 번째 부분 주를 1 주일로 간주합니다.

올해 말부터 7 개의 말하기를 원하는 경우 아래 스크립트를 사용하십시오. 일요일 기준으로 원한다면 사용하는 스크립트가 정확할 것입니다.


일주일에 #53입니다. 1 주일 만은 아닙니다.

하지만 우리는 주일에 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 일).

편집 :dayOfYear에 오프셋 1이 수정되었습니다.

+0

내년 초에 여전히 문제가 발생하지 않습니까? 1 월 1 일 이후에 1 주째로 돌아갑니다.진지하게, 나는 onejan 변수로 2010 년을 harding하는 것이 좋습니다. var onejan = new Date (2010,0,1); – ptpaterson

+0

그리고 예제의 코드는 일주일에 두 번 째 주를 나눕니 까? 나는 네가하는 일에 불필요하다고 생각한다. 하지만 패트릭의 코드가이를 수정합니다. – ptpaterson

+0

패트릭, 답변 해 주셔서 감사합니다. 나는 코드를 시도했지만 작동하지 않았다. 내 인용문/따옴표가 보이지 않는다. jQuery 함수에서도 뭔가를 변경해야합니까? 미안 해요, 이거 처음이에요. 다시 한번 감사드립니다. 참고로, 내년에도이 스크립트를 계속 사용하는 것이 좋습니다. –