2010-11-30 9 views
2

제목과 거의 같습니다. 외부 사용자 입력없이 다른 날 웹 사이트의 섹션에 특정 배너를 표시 할 수 있는지 묻는 질문을 받았습니다.javascript/jQuery를 사용하여 특정 날짜에 특정 요소를 표시 하시겠습니까?

내 첫 번째 생각은 javascript/jquery를 사용하는 것입니다. 우리는 사이트가 Netsuite 인 공포에 의해 제어되기 때문에 기능이 제한적입니다.

어떤 도움/아이디어 감사합니다 :)

-Wayne

+2

가장 잘하는 서버 측. – sje397

답변

6

편집 : 귀하의 코멘트에 관해서, 그것은 당신의 일에 따라 다른 슬라이드 쇼를로드 할 같은 소리 그 주.

다음은 수행 방법에 대한 간단한 일반적인 예입니다.

// Insert the code that loads the individual slideshows in the functions below 
var slideshows = [ 
    function() { /* insert code to load some slideshow */ }, 
    function() { /* insert code to load some other slideshow */ }, 
    function() { /* insert code to load a different slideshow */ }, 
    function() { /* insert code to load yet another slideshow */ } 
]; 
    // call a slideshow function depending on the day of week 
slideshows[ new Date().getDate() % slideshows.length ](); 

이것은 요일에 따라 배열과 다른 기능을 호출합니다. 당신은 그 중 7 명이 필요하지 않습니다. 자동으로 회전합니다.

다른 접근 방법이 있지만 슬라이드 쇼 설정 방법을 알아야합니다. 이것은 간단한 접근법입니다.

7 개 이상의 슬라이드 쇼가있는 경우 약간 변경해야합니다.


편집 :이 답변은 당신이 요일마다 다른 의미 가정. 그것이 당신의 의도인지 확실하지 않습니다.


이것은 모든 배너를로드 필요로하지 않기 때문에 내 원래의 대답보다 아마 더 낫다.

자바 스크립트 버전 만

예 :http://jsfiddle.net/patrick_dw/5drgu/4/

var banners = [ 
    "http://dummyimage.com/120x90/f00/fff.png&text=my+image", 
    "http://dummyimage.com/120x90/0f0/fff.png&text=my+image", 
    "http://dummyimage.com/120x90/00f/fff.png&text=my+image", 
    "http://dummyimage.com/120x90/ff0/fff.png&text=my+image" 
    ]; 
var banner = new Image(); 
banner.src = banners[ new Date().getDate() % banners.length ]; 
document.getElementById('container').appendChild(banner); 

의 jQuery 버전

예 : 01

var banners = [ 
    "http://dummyimage.com/120x90/f00/fff.png&text=my+image", 
    "http://dummyimage.com/120x90/0f0/fff.png&text=my+image", 
    "http://dummyimage.com/120x90/00f/fff.png&text=my+image", 
    "http://dummyimage.com/120x90/ff0/fff.png&text=my+image" 
    ]; 
var banner = $('<img>', { src:banners[ new Date().getDate() % banners.length ]}) 
          .appendTo('#container'); 

HTML

23,482,641,은 (는 빈 <img>로 시작하지 않는 있도록 조금 변경)

<div id='container'></div> 

원래 답 :

예 :http://jsfiddle.net/patrick_dw/5drgu/

var banners = $('#container img').hide(); 
banners.eq(new Date().getDate() % banners.length).show(); 

HTML

<div id='container'> 
    <img src = "http://dummyimage.com/120x90/f00/fff.png&text=my+image" /> 
    <img src = "http://dummyimage.com/120x90/0f0/fff.png&text=my+image" /> 
    <img src = "http://dummyimage.com/120x90/00f/fff.png&text=my+image" /> 
    <img src = "http://dummyimage.com/120x90/ff0/fff.png&text=my+image" /> 
</div> 

+0

indepth 답장을 보내 주셔서 감사합니다. 나도 인정하지 않는 인스턴트 메신저 javascript에 익숙하지 않은/jquery 모든 기존의 웹 사이트에 거의 준비가 스크립트를 구현 이외. 나는 여러 날 동안 하루에 다른 배너가되기를 바랄 생각입니다. 구현과 관련하여 이미 설정된 jquery rotating banner 스크립트에이를 추가 할 수 있습니까? 당신은 여기에 사용중인 것을 볼 수 있습니다 : http://www.gardensandhomesdirect.co.uk – Wayners247

+0

@ Wayners247 : 네, 요일마다 다른 슬라이드 쇼를 원한다면 비슷한 것을 할 수 있습니다. 슬라이드 쇼를 설정하는 방법을 모르겠지만 한 가지 간단한 접근법은 배열의 각 구성원마다 해당 날짜에 적절한 슬라이드 쇼를 호출하는 별도의 기능을 갖는 것입니다. 일반적인 예제로 업데이트하겠습니다. – user113716

+0

다시 한 번 감사드립니다. Patrick, 내가 제안한 내용을 가지고 놀고 나서 제대로 작동하는지 확인하겠습니다. 시간 내 주셔서 감사합니다. – Wayners247

0
var now = new Date(); 
var date = now.getMonth() + "-" + now.getDay(); 
switch(date) { 
    case "04-01": 
    $('<p>APRIL FOOLS!</p>').appendTo("body"); 
    break; 
    case "01-01": 
    $('<p>Happy New Year!</p>').appendTo("body"); 
    break; 
} 
4

여기 한 방법첫 번째 생각은 서버 쪽이어야합니다.

그런 다음 옵션이 없다면 javascript/jquery를 사용하여 제한 사항을 적용하면됩니다. Javascript 지원 브라우저.

따라서 파일 이름을 지정할 수 있습니다. image-19-7-2011.jpg을 사용하고 Date() 개체를 사용하여 현재 날짜에 사용할 파일 이름을 만듭니다. http://jsfiddle.net/rZaqx/

+0

+1이 동작은 표시/숨기기를하더라도 여전히 클라이언트 측에서 사용할 수 있으므로 클라이언트 측에서 "보이는"것으로 서버 측에서 구현해야합니다. – rbhro

+0

@rbhro, 완전히 동의합니다. 난 그냥 서버 쪽 옵션이 아닌 경우에 대한 코드를 제공 ..하지만 논리는 두 경우의 약자. –

+0

나는 completley에 동의하지만 서버 측 액세스는 사이트에서 사용중인 소프트웨어 인 Netsuite와 거의 일치하지 않습니다. – Wayners247

0

에서

var d = new Date(); 
var filename = 'image-' + d.getDate() + '-' + d.getMonth() + '-' + d.getFullYear() + '.jpg'; 

document.getElementById('banner').src = '/path/to/' + filename; 

예와 같이

뭔가이 대답은 당신이 각 요일에 대해 다른 배너 이미지를 원하는 가정합니다.

백엔드에서 배너를 업데이트 할 수없는 경우 CSS의 display: none으로 숨겨진 페이지의 모든 배너를 가질 수 있습니다. 당신이 등 일요일, 월요일에 banner1을위한 7 개 요소라는 이름의 banner0이있는 경우 작동

var date = new Date(); 
$("#banner" + date.getDay()).show(); 

이를 :

은 그럼 그냥 같은 것을 사용그냥 배너 이미지를 변경하려면

또는, 당신은 다음처럼 CSS를 설정할 수 있습니다 :

div#banner { background-image: url(default.jpg)} // Common styling 
div#banner.day0 { background-image: url(image0.jpg); } // Image for Sunday 
div#banner.day1 { background-image: url(image1.jpg); } // Image for Monday 
div#banner.day2 { background-image: url(image2.jpg); } // Image for Tuesday 

를 그런 다음 jQuery를 같이 볼 수 있었다 : 물론

var date = new Date(); 
$("div#banner").addClass("day" + date.getDay()); 

, 문제 두 옵션 모두 매일 매일 다른 배너를 가져야한다는 것입니다. 그들은 당신이 그것을 할 수있는 몇 가지 방법 일뿐입니다 (그러나 유일한 방법은 아닙니다).

관련 문제