JS 非画像動的読み込み効果の実装 code_javascript スキル-jsチュートリアル-php.cn
JS 非画像動的読み込み効果の実装 code_javascript スキル
- WBOYオリジナル
- 2016-05-16 18:30:051443ブラウズ
代幣如下:
最初实この機能の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 オブジェクトであるためです。
このメソッドを使用します:
<本文>
来源prototype.js里经典创建Js对オブジェクトの
var Class = {
create: function() {
return function() { this.init.apply(this,arguments); }
}
}
var LoadingMsg = Class.create();
Class.create() の時点で 2 件の事、1 つは LoadingMsg を作成したオブジェクト、つまり var LoadingMsg = function() {};
外部一件事です。
これを実現できた場合は、LoadingMsg の init メソッドを使用して、c# の構築関数に相当する LoadingMsg の静的変数を初期化します。例:
var LoadingMsg = function() { };
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;
}
},
開始: function(spanId, spanMsg) {
this.init(spanId, scanMsg);
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);
}
}
とは異なりますが、init の手順调から開始時間実行、したがってこの调用の時間気象也就变成了
varloadingMsgObj = new LoadingMsg();
function StartLoading() {
loadingMsgObj.Start("spanId", "loading");
}
面からオブジェクトへのアクセス、私たち人間は、オブジェクトを実行する方法の時間ではなく、オブジェクトの時間に即時にパラメータを入力する、最初の書法です。
さらに、setInterval メソッドのパラメータを渡す場合、パラメータが単一の文字列の場合、
setInterval("DisplayXYZ('xyz')",1000); を指定できます。
結果パラメータがオブジェクトである場合、
setInterval(function(){DisplayXYZ(obj);},1000);
LoadingMsg も主に Ajax で使用され、リクエストの送信後のloadingMsgObj.Start()、および正常に取得された際のloadingMsgObj.End()を実行するために使用されます。
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。