• ベストアンサー

カウントダウンJavascript 

Javascriptでホームページにカウントダウンを設置しょうと思っているのですが… やはり、こったモノをと本などを買って勉強しています。 そこでお尋ねしたいのですが、残り ○日○時間○分○,○○秒といったように ○,○○秒というのはできるんでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30871
noname#30871
回答No.2

> ○,○○秒 確認ですが、このカンマって小数点ですよねこの場合? だとしたら、こんな感じになるでしょうか……。 中の変数の値は適宜調節してください。 あと、見るマシンによっては激重で不満爆発になるやもしれませんので注意。 <HTML> <HEAD> <TITLE>かうんとだうん♪</TITLE> <SCRIPT language="JavaScript"> <!-- var timerID = 10; var KIZAMImilliSec = 33; // 1000分の33秒ごとにカウント var year = 2010; var month = 5; var day = 1; var hour = 0; var minute = 0; var second = 0; origDate = new Date; origDate.setYear(year); origDate.setMonth(month-1); origDate.setHours(hour); origDate.setMinutes(minute); origDate.setSeconds(second); function putValue() { nowDate = new Date; var restMilliSec = origDate.getTime() - nowDate.getTime(); if(restMilliSec > 0){ var restYear = Math.floor(restMilliSec / (1000*60*60*24*365)); var rest = "" + restYear + "年 "; restMilliSec -= restYear*1000*60*60*24*365; var restDay = Math.floor(restMilliSec / (1000*60*60*24)); rest += "" + restDay + "日 "; restMilliSec -= restDay*1000*60*60*24; var restHour = Math.floor(restMilliSec / (1000*60*60)); rest += "" + restHour + "時間 "; restMilliSec -= restHour*1000*60*60; var restMinute = Math.floor(restMilliSec / (1000*60)); rest += "" + restMinute + "分 "; restMilliSec -= restMinute*1000*60; var restSecond = Math.floor(restMilliSec / 1000); restMilliSec -= restSecond*1000; rest += "" + restSecond + "秒" + restMilliSec; document.dummy.textbox.value = "" + rest; }else{ document.dummy.textbox.value = "おめでとう♪"; } clearTimeout(timerID); timerID = setTimeout("putValue()", KIZAMImilliSec); } // --> </SCRIPT> </HEAD> <BODY onLoad="putValue()"> <SCRIPT language="JavaScript"> <!-- document.write(year + "年" + month + "月" + day + "日"); document.write(hour + "時" + minute+ "分" + second + "秒"); document.writeln("まで あと……"); // --> </SCRIPT> <FORM name="dummy"> <INPUT type="text" name="textbox" size="50"> </FORM> </BODY> </HTML>

siroyagikuroyagi
質問者

お礼

大変親切に回答して頂き感謝いたします。

その他の回答 (1)

  • setera
  • ベストアンサー率38% (29/75)
回答No.1

結論から先にいいますと、おそらく「原則的にはできない」と思います。 カウントダウンを作るのにはDateオブジェクトから時間を取り出しますよね。でもそのメソッドには"○,○○…"を取り出すものがありません。なのでシステム的に表現することはできません。 ただ、この方法を使えばできそうな気もするんですが。(↓) Dateオブジェクトから",○○"の部分を取り出すことはできないのでただの変数(henと仮定)を利用し、1秒間に9回カウントしてはまた0に戻す関数を作ります。henを"."をはさんで"秒"の変数にくっつけます。(←○.○秒といったように) この一連の動作をタイマーにセットして1秒間に10回カウントダウンの表示を更新します。10回目にはDateオブジェクトからの"秒"が更新されhenの値も0に戻るので、傍目にはミリ秒までカウントしているようにも見えます。 ただ実際に試したことがないので(今思いついただけです)、机上の絵空事に終わるかもしれませんが。

siroyagikuroyagi
質問者

お礼

素早い回答有り難うございました。

関連するQ&A