アプリ版:「スタンプのみでお礼する」機能のリリースについて

カウントダウンプログラムを使用しているのですが、
毎日0時になったらカウントダウンがスタートするように改造したく思います。
(カウントダウンが始まる前は非表示にしておきたいです。)

使っているソースは以下です。
お詳しい方、教えていただけませんでしょうか。

よろしくお願いいたします!

-----------------------------------

<!-- カウントダウン --><DIV id="myCwww"></DIV>
<SCRIPT language="JavaScript"><!--
function myCountd(){
myHyouji = 1; //0で秒数、1で日数含む形式

mySetname = "セール終了"; //目標時間の名称
mySetyear = 2011; //目標年
mySetmon = 3; //目標月
mySetday = 6; //目標日
mySethour = 23; //目標時
mySetmin = 59; //目標分
mySetsec = 59; //目標秒

myTime = new Date();
mySettime = new Date(mySetyear,mySetmon - 1,mySetday,mySethour,mySetmin,mySetsec);
myTimeth = (Math.floor( ( myTime.getTime() - mySettime.getTime() ) / 1000) ) * -1;

if(myTimeth > -1){
myChunts = 0;
} else {
myChunts = 1;
myTimeth = myTimeth * -1;
}

if(myHyouji == 1){
var myWarid = 0;
var myWarih = 0;
var myWarim = 0;
if(myTimeth > 86399){
myWarid = myTimeth / 86400;
myWarid = Math.floor(myWarid);
myTimeth = myTimeth - (86400 * myWarid);
}
if(myTimeth > 3599){
myWarih = myTimeth / 3600;
myWarih = Math.floor(myWarih);
myTimeth = myTimeth - (3600 * myWarih);
}
if(myTimeth > 59){
myWarim = myTimeth / 60;
myWarim = Math.floor(myWarim);
myTimeth = myTimeth - (60 * myWarim);
}
myTimeth = myWarid + "日と" + myWarih + "時間" + myWarim + "分" + myTimeth;
}
if(myChunts == 0){
document.getElementById("myCwww").innerHTML = mySetname + "まで、あと" + myTimeth + "秒です";
} else {
document.getElementById("myCwww").innerHTML = "セール終了いたしました。";
}
}
setInterval("myCountd()", 1000);
// --></SCRIPT><!-- カウントダウン -->

A 回答 (6件)

#4、#5です。



>必要となる実行用のタグをお教え願えますでしょうか
#5に記した通りですので、実行用(?)のタグ(?)は必要ありません。
ほとんどご質問文のものと同型なので、説明もいらないかと思ったのですが…
(divのidの「myCwww」ってのだけはわからない名前なので変えてますけど)

#4で書いたように、そもそもが、想像だらけの当たるも八卦のものなので、ご質問の回答になっているのかどうかも怪しいです。
以下、テストしたソース。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Script-Type" content="text/javascript">
</head>
<body>

<div id="countdown"></div>

<script type="text/javascript">
<!--
(function(){
var base = "2011/01/01"; //表示/非表示の基準日
var comment = "定型文"; //非表示時の定型文
var id = "countdown"; //表示用要素のid

var element = document.getElementById(id);
var divide = function(r, n){
var tmp = r.count/n | 0;
var v = r.count - tmp * n;
r.count = tmp;
r.time.unshift( (v<10?"0":"") + v);
}

var timer = function(){
var today = new Date();
var n_day = new Date(today.getFullYear(), today.getMonth(), today.getDate()+1);
var def = (today - new Date(base))/24/60/60/1000 | 0;
var remain = { time:[], count:(n_day-today)/1000 | 0 };

if(def % 2){
element.innerHTML = comment;
def = remain.count - 30;
if(1>def) def = 1;
setTimeout(timer, def * 1000);
} else {
divide(remain, 60);
divide(remain, 60);
divide(remain, 24);
element.innerHTML = remain.time.join(":");
setTimeout(timer, 500);
}
}
timer();
})();
//-->
</script>
</body>
</html>
    • good
    • 0
この回答へのお礼

地震などあり、せっかくいただいた回答へのお返事が
おくれてしまってたいへん失礼いたしました!

毎回とても助かっています、本当にありがとうございました。

お礼日時:2011/04/15 18:00

#4です。



> 教えていただいたものをそのまま貼り付けると
>何も出てこなかったのですが
>他にも記述する必要はありますでしょうか。
どのような貼り付け方をなさったのかわかりませんが、回答に提示したのはスクリプト部分だけです。

最低限のHTML構成と、表示対象の要素(およびそのidとスクリプト内のidを一致させておく)が必要です。
あたりまえですが、スクリプトは<script>タグの中に。
実行は、表示用の要素が読み込まれてから行なうようにしてください。
(そうでないと、表示するための要素が無いためエラーになります)


日付の変わり目などの全体の検証は行なっていませんが、基本的な動作の確認はfx、IEで行なっています。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!!!

HTMLとCSSしかわからないもので・・・
記述する場所、最低限のHTML構成はOKです。

必要となる実行用のタグをお教え願えますでしょうか。
たびたびの質問で申し訳ございません・・・

お礼日時:2011/03/11 13:53

質問の内容がさっぱり把握できてませんけれど、



>1日おきに0:00~23:59のカウントダウンを行い、
 「一日おき」というのは隔日ということと解釈。表示する日と、表示しない日が交互にあるということ。
 カウントダウンは、時刻が0:0:01だったら「23:59:59」で、段々減少し23:59:59に0:0:01を表示して、24:0:0(0:0:0)に終了すると解釈。
 要は、固定時刻(午前0時)へ向けてのカウントダウンと解釈。(固定日の時刻へのカウントダウンではない)

>カウントダウン終了後、また、翌日はカウントダウン開始前に
>指定の定型文を表示させたく思います
 時間を表示していないときは、常に「指定文」が表示されていればよいと解釈。
 (カウントダウン終了時も同じ。指定文が表示される)


・・・と勝手に解釈すると、最初の質問文やご提示のスクリプトとはだいぶ違うような気もしますが
当たるも八卦で、こんなかんじ?(未検証)
(全角空白は半角に)

(function(){
var base = "2011/01/01"; //表示/非表示の基準日
var comment = "定型文"; //非表示時の定型文
var id = "countdown"; //表示用要素のid

var element = document.getElementById(id);
var divide = function(r, n){
 var tmp = r.count/n | 0;
 var v = r.count - tmp * n;
 r.count = tmp;
 r.time.unshift( (v<10?"0":"") + v);
}

var timer = function(){
 var today = new Date();
 var n_day = new Date(today.getFullYear(), today.getMonth(), today.getDate()+1);
 var def = (today - new Date(base))/24/60/60/1000 | 0;
 var remain = { time:[], count:(n_day-today)/1000 | 0 };

 if(def % 2){
  element.innerHTML = comment;
  def = remain.count - 30;
  if(1>def) def = 1;
  setTimeout(timer, def * 1000);
 } else {
  divide(remain, 60);
  divide(remain, 60);
  divide(remain, 24);
  element.innerHTML = remain.time.join(":");
  setTimeout(timer, 500);
 }
}
timer();
})();

この回答への補足

補足 教えていただいたものをそのまま貼り付けると
何も出てこなかったのですが
他にも記述する必要はありますでしょうか。

たいへんお手数ですが教えていただけますでしょうか。
よろしくお願いいたします!

補足日時:2011/03/10 13:02
    • good
    • 0
この回答へのお礼

fujillinさん、今回もご回答いただき本当にありがとうございます!!!

説明がうまくできずにすみません・・

教えていただいたものをさっそく試してみます!

お礼日時:2011/03/10 10:35

"もう一つタイマー"を作って現在時刻を確認し、0時になれば


setInterval("myCountd()", 1000);
を実行、"もう一つタイマー"を停止する。

というのでどうでしょうか。

この回答への補足

教えていただいたものをそのまま貼り付けると
何も出てこなかったのですが
他にも記述する必要はありますでしょうか。

たいへんお手数ですが教えていただけますでしょうか。
よろしくお願いいたします!

補足日時:2011/03/10 13:02
    • good
    • 0
この回答へのお礼

talooさん、ご回答ありがとうございます!!!

勉強不足で申し訳ないのですが、
ソースコード教えていただけますでしょうか。

今回のプログラムもサンプルを少し変更しただけで
Javascriptの知識がありません。

たいへんお手数ですが、タイマーが可能でしたらやり方をお教え願います。
すみませんが、よろしくお願いいたします!

お礼日時:2011/03/09 12:26

私が、ご質問の意味を正しく解釈してないのかも知れませんが


あなたの意図してる事をクライアントサイトのJavascriptのタイマー?を使って実現する事は不可能です。サーバー側のプログラムを作る必要があります。Javascriptのタイマーはそのjavascriptが動いているページを閉じると消滅するからです。

もちろん、ページが表示された時に現在日時と現在時間を取得して、その時点からのオフセットでカウントダウン開始時刻と修了時刻を何らかの規則や、予め用意しておいたデータで決めて、カウントダウン開始時刻前なら定型メッセージ、開始時刻を過ぎているならカウントダウンを開始させるのは出来ます。でもそれは、タイマーの処理じゃ無いです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

1日おきに0:00~23:59のカウントダウンを行い、
カウントダウン終了後、
また、翌日はカウントダウン開始前に
指定の定型文を表示させたく思います。

これはjavascriptでは不可能でしょうか。

お礼日時:2011/03/09 12:16

>毎日0時になったらカウントダウンがスタートする


毎日0時に、目標年月日日時をその日の23:59:59 にするって事ですか?
だとすると、
>カウントダウンが始まる前は非表示にしておきたい
に矛盾するような、前日までは非表示???
    • good
    • 0
この回答へのお礼

yyr446様、ご返答ありがとうございます。

失礼しました・・・そうですね。

毎日0時にカウントダウンが開始になるまで、また、終わったあとは
指定した定型文が表示されるようにしたく思います。

時間をタイマー指定することは可能でしょうか。

お礼日時:2011/03/07 18:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!