これはとてもシンプルなようですが、ここで私はそれを台無しにしています。jQueryはバナーローテータの問題を軽減します
私は単純なバナーローテーターを作ろうとしています(私は、多くのプラグインがあることを知っています - 私は経験を積み重ねようとしています)。
問題#1。現在、最初のイメージはフェードアウトせず、2番目のイメージだけがフェードアウトしません。これが解決され、タイムアウト後にフェードアウトに設定されます。私は、jQueryの負荷がDOMの準備ができてからすべての画像がロードされるのを待たずにいると思うので、画像がロードされる前にファンクションがトリガされるため、これが疑わしいです。私は同じ結果があったときに間違っていることを証明した。document.onload
問題#2。私はこの機能を繰り返すことはできません。
while(true) {
setTimeout("fade()", 2500);
}
これは完全に失敗しました。 私は少しの経験があり、どんな方向のポイントもとても役立つでしょう!
コード:
$.fn.preload = function() { //preload the picture
this.each(function(){
$('<img/>')[0].src = this;
});
}
function nextImg() { //generate random image path
var curImg = "images/";
var randomNumber=Math.floor(Math.random()*11)
curImg += randomNumber;
curImg += ".jpg";
$([curImg]).preload();
return curImg;
}
function fade() {
var img = nextImg(); //grab the random image path
$("#umom1").fadeOut(1900, function() {
$("#umom1").attr("src", img);
$("#umom1").fadeIn(1900);
});
}
$("document").ready(function() {
setTimeout("fade()", 2500);
});
setIntervalを使用する場合+1。 JavaScriptは同時実行性をサポートしていないので、ブラウザは常にコードが実行されている間はロックされます(少なくとも伝統的には、最新のブラウザにはHTML5 /新JS機能があると思いますそうです)。通常、これはほんの数ミリ秒です。無限ループの場合、ブラウザはただ凍結します。 – RMorrisey