代幣如下:
最初实この機能のjs对象LoadingMsg:
var Class = {
create: function() {
return function() { this.init.apply(this,arguments); }
}
}
var LoadingMsg = Class.create();
LoadingMsg.prototype = {
init: function(spanId, spanMsg) {
this.intervalID = -10000;
this.spanId = spanId;
this.spanMsg = spanMsg;
this.timespan = 1000;
this.pointNum = 3;
this.initPointMsg = "...";
},
Loading: function() {
var maxLength = this.spanMsg.length this.pointNum;
var currentSpanMsg = document.getElementById(this.spanId).innerHTML;
if (currentSpanMsg.length < maxLength) {
document.getElementById(this.spanId).innerHTML = ".";
}
else {
document.getElementById(this.spanId).innerHTML = this.spanMsg;
}
},
Start: function() {
document.getElementById(this.spanId).innerHTML = this.spanMsg this.initPointMsg;
var callObj = this;
this.intervalID = setInterval(function() { callObj.Loading(); }, this.timespan);
},
End: function() {
document.getElementById(this.spanId).innerHTML = "";
clearInterval(this.intervalID);
}
}
关键点:
如果ハンドル
var callObj = this;
this.intervalID = setInterval(function() { callObj.Loading(); }, this.timespan);
写成:
this .intervalID = setInterval(this.Loading, this.timespan);
は、Loading メソッドの実行時に this.spanMsg に到達しない場合があります。
は、setInterval の最初のパラメータにあるこれは、LoadingMsg オブジェクトではなく Windows オブジェクトであるためです。
このメソッドを使用します:
<本文>