[楽天][購買率UP]イベント開始、終了までをカウントダウン表示するJavascript

公開日:  最終更新日:2015/06/11

おもわず買いたくなっちゃうかも[購買率UP]イベント開始、終了までをカウントダウン表示するJavascript
こんばんは、先日に引き続き、イベント時に使えるJavascriptの紹介になります。
楽天ではお買い物マラソンが終わったこのタイミングで書く記事ではないと思いながら書きたいので書いちゃいます。

ぜひ、次回イベント時に活用してもらえたらと思います。

スポンサードリンク

カウントダウンの表示
ネットショップで期間限定のイベント等で購買率を上げるのに設置されているのを見たことがあるかと思います。

サンプル1 (↓↓↓こんな感じの)

上のサンプルはぷらすぶろぐ
コピペでサクッと導入できるライブラリ非依存のJavascriptカウントダウン
を参考にさせて頂きました。

サンプル1のソース

<style type="text/css">
body{
overflow: hidden;
}
*{
margin: 0;
padding: 0;
}
#CDT{
width:100%;
font-weight: bold;
text-align: center;
padding: 5px 0px;
background-color: #000000;
}
#CDT p{
margin-bottom: 5px;
color:#ffffff;
}
#CDT_sat{
margin-bottom: 5px;
width:100%;
text-align: center;
}
#CDT_sat .day{
font-size: 14px;
color: #ffffff
}
#CDT_sat .hour{
font-size: 14px;
color: #ffffff
}
#CDT_sat .min{
font-size: 14px;
color: #ffffff
}
#CDT_sat .sec{
font-size: 14px;
color: #ffffff
}
#CDT_sat .milli{
font-size: 14px;
color: #ffffff
}
</style>
<div id="CDT">
<p>終了まで残り</p>
<div id="CDT_sat"></div>
</div>
<script language="JavaScript" type="text/javascript">
function CountdownTimer(elm,tl,mes){
this.initialize.apply(this,arguments);
}
CountdownTimer.prototype={
initialize:function(elm,tl,mes) {
this.elem = document.getElementById(elm);
this.tl = tl;
this.mes = mes;
},countDown:function(){
var timer='';
var today=new Date();
var day=Math.floor((this.tl-today)/(24*60*60*1000));
var hour=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*60*1000));
var min=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*1000))%60;
var sec=Math.floor(((this.tl-today)%(24*60*60*1000))/1000)%60%60;
var milli=Math.floor(((this.tl-today)%(24*60*60*1000))/10)%100;
var me=this;
if( ( this.tl - today ) > 0 ){
if (day) timer += '<span class="day">'+day+'日</span>';
if (hour) timer += '<span class="hour">'+hour+'時間</span>';
timer += '<span class="min">'+this.addZero(min)+'分</span><span class="sec">'+this.addZero(sec)+'秒</span><span class="milli">'+this.addZero(milli)+'</span>';
this.elem.innerHTML = timer;
tid = setTimeout( function(){me.countDown();},10 );
}else{
this.elem.innerHTML = this.mes;
return;
}
},addZero:function(num){ return ('0'+num).slice(-2); }
}
function CDT_sat(){
var tl = new Date('2020/01/01 00:00:00');
var timer = new CountdownTimer('CDT_sat',tl,'終了しました');
timer.countDown();
}
CDT_sat();
</script>

使い方としては、86行目に終了日時を指定するだけです。
見た目の調整方法としては、<style>内の「.day」「.hour」「.min」「.sec」「.milli」部分で文字サイズ、色等を個別に指定する形になります。

上記のままでも十分に便利なのですが、本日はネットショップ向けに改良してみたので紹介したいと思います。

改良点について

定期的に開催される楽天のイベントを例に考えてみます。

「お買い物マラソン ◯月◯日 ◯時◯分 ~ ■月■日 ■時間■分 」
のようなイベントで利用すると考えた場合

・イベント開始前には、◯月◯日 ◯時◯分から開始予定 とアナウンス
・イベント中は、サンプル1のようなカウントダウンを表示
・イベント終了後は、終了しましたとアナウンス、
またはカウントダウンの削除して内容変更

上記のような更新が必要になりそうですね。
結構更新が手間に感じますねー。

イベント開始の暫く前から1回設定するだけでイベント終了後も次回イベントまでソース変更なしに出来るのが理想ですよね。

改良機能について

①イベント開始日時の指定
②開始前の表示内容指定(開始までのカウントダウン表示 あり/なし)
③イベント中の終了までのカウントダウン表示+表示内容指定
➃終了後の表示内容指定(通常時の表示内容指定)

上記の機能を追加してみました。

サンプルソース2

<style type="text/css">
body{
overflow: hidden;
}
*{
margin: 0;
padding: 0;
}
#CDT{
width:100%;
font-weight: bold;
text-align: center;
padding: 5px 0px;
background-color: #000000;
}
#CDT p{
margin-bottom: 5px;
color:#ffffff;
}
#CDT_sat{
margin-bottom: 5px;
width:100%;
text-align: center;
}
#CDT_sat .day{
font-size: 14px;
color: #ffffff
}
#CDT_sat .hour{
font-size: 14px;
color: #ffffff
}
#CDT_sat .min{
font-size: 14px;
color: #ffffff
}
#CDT_sat .sec{
font-size: 14px;
color: #ffffff
}
#CDT_sat .milli{
font-size: 14px;
color: #ffffff
}
</style>
<div id="CDT">
<p id="msg_start" style="display:none;">
開始前のメッセージ
</p>
<p id="msg_onevent" style="display:none;">
イベント中のメッセージ
</p>
<p id="msg_end" style="display:none;">
イベント終了後のメッセージ
</p>
<div id="CDT_sat"></div>
</div>
<script language="JavaScript" type="text/javascript">
function CountdownTimer(elm,tl,mes){
this.initialize.apply(this,arguments);
}
CountdownTimer.prototype={
initialize:function(elm,tl,mes) {
this.elem = document.getElementById(elm);
this.tl = tl;
this.mes = mes;
},countDown:function(){
var timer='';
var today=new Date();
var day=Math.floor((this.tl-today)/(24*60*60*1000));
var hour=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*60*1000));
var min=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*1000))%60;
var sec=Math.floor(((this.tl-today)%(24*60*60*1000))/1000)%60%60;
var milli=Math.floor(((this.tl-today)%(24*60*60*1000))/10)%100;
var me=this;
if( ( this.tl - today ) > 0 ){
if (day) timer += '<span class="day">'+day+'日</span>';
if (hour) timer += '<span class="hour">'+hour+'時間</span>';
timer += '<span class="min">'+this.addZero(min)+'分</span>';
timer += '<span class="sec">'+this.addZero(sec)+'秒</span>';
timer += '<span class="milli">'+this.addZero(milli)+'</span>';
this.elem.innerHTML = timer;
tid = setTimeout( function(){me.countDown();},10 );
}else{
document.getElementById("msg_onevent").style.display="none"; 
document.getElementById("msg_end").style.display="block";  
return;
}
},addZero:function(num){ return ('0'+num).slice(-2); }
}
function CDT_sat(){
//tlstart:カウントダウン開始日時を設定
var tlstart = new Date('2013/07/08 21:00:00');
//tlstart_countdown:0 or 1 (0 開始までカウントダウンなし   1 カウントダウンあり   
var tlstart_countdown=1;
//tl:カウントダウン終了日時を設定       
var tl = new Date('2013/07/09 18:05:00');
var today=new Date();
if(tlstart<today){
var timer = new CountdownTimer('CDT_sat',tl,'');
document.getElementById("msg_onevent").style.display="block";
}else{
document.getElementById("msg_start").style.display="block";
if(tlstart_countdown==1){
var timer = new CountdownTimer('CDT_sat',tlstart,'');
}else{
return;
}  
}
timer.countDown();
}
CDT_sat();
</script>

イベントに合わせた指定項目は
99行目に開始日時を指定
102行目で開始までのカウントダウンあり/なしを指定
105行目にイベント終了日時を指定

48行目から56行目でそれぞれの表示内容を設定
<p id=”msg_start” style=”display:none;”>
開始前のメッセージ
</p>
<p id=”msg_onevent” style=”display:none;”>
イベント中のメッセージ
</p>
<p id=”msg_end” style=”display:none;”>
イベント終了後のメッセージ
</p>

このサンプルでは<p>を使っていますが、id=””の部分を
「msg_start」「msg_onevent」「msg_end」を指定すれば
<div>タグなどの他のタグでも問題ありません。
イベントバナーを貼り付けても良いですし、終了後(通常時)は
別のバナーでも商品画像でも良いかもしれません。

msg_start:開始前に表示する内容
msg_onevent:イベント中に表示する内容
msg_end:イベント終了後(通常時)に表示する内容

「イベント開始まで」
カウントダウンあり
「イベント終了まで」
イベントのバナー表示など
「イベント終了しました」
「通常時の内容」バナー、商品画像など
41-2.png 41-1.png 41-3.png

をそれぞれ指定することができます。
57行目の<div id=”CDT_sat”></div>の部分にカウントダウンが表示されます。見た目、レイアウトなどを調整する場合は、<style>部分を調整してみてください。


楽天の定期的なイベントもありますが、ショップ独自に開催しているタイムセールなどにも使えそうな気がします。

先日、紹介したバナー画像などを期間指定で表示するjavascriptと組み合わせて使うのも良いかもしれません。ぜひ、活用してみてください。




FacebookページやGoogle+ページにもブログ更新・気になる情報を流していますので
よろしければ、この機会にぜひ「フォロー」または「いいね」をよろしくお願いします。

ネットショップ出店をお考えの方はこちらをどうぞ

ネットショップ出店サービス一覧

ショップ運営に使えるjQuery動作デモ1ページにまとめてみた

ECサイト・ネットショップで使えるjQueryデモをまとめてみた

ショップにカルーセル表示を実装「おすすめ」

カルーセル表示実装ならjQuery「slick.js」が簡単でおすすめ

ネットショップ運営の効率化に使えるソフト・ASPサービス

ネットショップ受注・在庫・商品・発注管理

仕入先・商材をお探しの方はこちらをどうぞ

ネットショップ運営に使える仕入・卸サイト一覧

ネットショップへの集客に使える広告いろいろ

ネットショップへの集客に使える広告まとめ

ネットショップで使えるCSS・JavaScriptのデモを1ページにまとめてみた

ECサイト・ネットショップで使えるCSS・JavaScriptのデモをまとめてみた

ブログでの集客に記事作成代行サービスを活用

記事作成に使える記事外注サービスまとめ

お店(実店舗)の集客に活用できる店舗ポータル・Webサービスまとめてみた

お店(実店舗)の集客に活用できる登録サイト・webサービスまとめてみた

ショップ運営に役立つwebサービス・ツールについてまとめてみた

ECサイト・ネットショップで使えるwebサービス・ツールをまとめてみた

楽天市場の運営者向けの商品陳列HTMLタグ生成無料ツール作ってみました

楽天市場向け無料ツール

Your Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

スポンサードリンク

記事が気に入ったらシェアお願いします

PAGE TOP ↑