ここでは、秒単位の時刻を画像を用いてデジタル風に表示します。画像表示には、CSSストライプ技術を利用しています。
<script type="text/javascript"> var gDateJSObj; function viewDate(){ var argv=['DIGITAL_CLOCK_HOUR1','DIGITAL_CLOCK_HOUR0','DIGITAL_CLOCK_MIN1','DIGITAL_CLOCK_MIN0','DIGITAL_CLOCK_SEC1','DIGITAL_CLOCK_SEC0']; gDateJSObj = new DateJS(); gDateJSObj.dspDigitalClock(argv); } function hiddenDate(){ gDateJSObj.stopDigitalClock(); } </script>
ここでは、prototype.jsを利用してnew
演算子でオブジェクトを生成しコントロールします。
Class.create
を使うときは、オブジェクト生成時にinitialize()
が実行されます。ここで、メンバを初期化します。DateJS.dspDigitalClock()
では、CSS Stripe画像のクラス名を変更しています。<script type="text/javascript" src="/AJAX/prototype.js" charset="utf-8"></script> <script type="text/javascript"> var DateJSBase = { Version: '2.0.0', Description: '日付・時刻を刻々と表示する、日付を元に画像の表示/非表示' }; //---------------------------------------------- // prototype.js var DateJS = Class.create(DateJSBase, { Version: '2.3.a', _date: {}, // テンポラリ用オブジェクト _classNames: ['zero','one','two','three','four','five','six','seven','eight','nine'], // コンストラクタ initialize: function() { this.NowTimeTitlebarCount=0; this.intervalNowTimeOnTitlebarID=0; }, //-------------------------------- // デジタル時計(1)時分秒 dspDigitalClock: function (elements){ elements = $(elements); if (AugusAjax.Browser.Trident){ // IE の場合は、第三引数以降が利用できないので、無名関数で、呼び出せばよい this.intervalDigitalClock = setInterval(function () { this._getDigitalClock(elements); }.bind(this),999); } else this.intervalDigitalClock = setInterval(this._getDigitalClock.bind(this), 999, elements); }, _getDigitalClock: function (elements) { // 1時間経過したら停止する if (this.DigitalClockCount++ >= 3600000) { // 60*60*1000 this.stopDigitalClock (); alert(gAlertStr[0]); } this._date.now = new Date(); var nPos=0; var n=0; var element; for (var i=0; i<elements.length; i++) { switch(i){ case 0: case 1: n = String(this._date.now.get0Hours()); break; case 2: case 3: n = String(this._date.now.get0Minutes()); break; case 4: case 5: n = String(this._date.now.get0Seconds()); break; } (i%2)? nPos=n.charAt(1) : nPos=n.charAt(0); element = getEl(elements[i]); element.className = this._classNames[nPos]; } delete this._date.now; }, stopDigitalClock: function () { clearInterval (this.intervalDigitalClock); } }); // End of DateJS // $HTML(element,str) getElementById(element).innerHTML = str; </script>