<script type="text/javascript">
var gDateJSObj;
function start(){
gDateJSObj = new DateJS();
gDateJSObj.dspPassingYMDTime('KOKO');
}
function stop(){
gDateJSObj.stopPassingYMDTime();
}
</script>
ここでは、prototype.jsを利用してnew演算子でオブジェクトを生成しコントロールします。
Class.createを使うときは、オブジェクト生成時にinitialize()が実行されます。ここで、メンバを初期化します。DateJS.dspPassingYMDTime(element)では、divタグなどに付与したID文字列を渡します
。
<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.2.a',
_date: {}, // テンポラリ用オブジェクト
// コンストラクタ
initialize: function() {
this.PassingYMDTimeCount=0;
this.intervalPassingYMDTimeID=0;
},
//------------------------------
// ○○から△時分秒経過
dspPassingYMDTime: function (element) {
element = getEl(element);
if (typeof element == 'null') return;
this._date.baseTime = new Date();
this._dspPassingYMDTime(element);
if (AugusAjax.Browser.Trident){
// IE の場合は、第三引数以降が利用できないので、無名関数で、呼び出せばよい
this.intervalPassingYMDTimeID.push( setInterval(function () { this._dspPassingYMDTime(element); }.bind(this),999) );
}
else
this.intervalPassingYMDTimeID.push( setInterval(this._dspPassingYMDTime.bind(this), 10, element) );
return;
},
_dspPassingYMDTime: function (element) {
// 1時間経過したら停止する
if (this.PassingYMDTimeCount++ >= 3600000) { // 60*60*1000
this.stopPassingYMDTime ();
alert(gAlertStr[0]);
}
this._date.now = new Date ();
var temp = this._date.now - this._date.baseTime;
$HTML(element,getHMS(temp));
delete this._date.now;
},
stopPassingYMDTime: function () {
for (var i=0; i<this.intervalPassingYMDTimeID.length; i++) {
clearInterval (this.intervalPassingYMDTimeID[i]);
}
}
});
// End of DateJS
// $HTML(element,str) getElementById(element).innerHTML = str;
</script>