3

不動産のショーウィンドウに非インタラクティブな表示を作成しようとしています。

で遊んでから久しぶりsetInterval()です。

私のスクリプトが最初にステップスルーするとき、それは問題ありません。しかし、を介して次のプロパティを取得しようとするとgetNextProperty()、それは干し草になり始めます。Firebug、または同等の出力がある場合は、Firebugが本来あるconsole.log()べきではないものを呼び出していることがわかります。

今ではかなりのJavaScriptがあるので、すべてを投稿するよりもJavaScriptにリンクしたほうがいいと思います。

ストアディスプレイ

不快なJavaScript

私のすべてのDOM/AJAXはjQueryで行われていることに言及する価値があります。

動作することを確認するために最善を尽くしましたがclearInterval()、その下のコードは実行されていないようです。

setInterval()、次の画像をプリロードしてからギャラリーに表示するために使用されます。間隔が最後の画像((nextListItem.length === 0))にいることを検出すると、その間隔をクリアして、新しいプロパティで最初からやり直すことを意味します。

それはしばらくの間私を狂わせてきました、それで誰かが私を助けることができますか?

それはおそらく本当に明白なことです!

どうもありがとう!

アップデート

さて、問題はプラグインが箱から出してすぐに機能すると仮定するという私の素朴さであったことを知ったほうがいいと思います。

StackOverflowの回答からこのプラグインを入手しました。私はこの質問の作者に警告しました。

すべての回答をありがとう!

4

1 に答える 1

3

問題のある領域は次のとおりです。

jQuery.extend(jQuery, {
  imagesToLoad: 0,

問題は、この変数がグローバル/共有(jQuery.imagesToLoad)であるため、後でこのチェックを行うことです。

if(jQuery.loadedImages.length >= jQuery.imagesToLoad){

このプラグインが同時に2回呼び出されないことに依存します。そうでない場合は、コードの後半でこれを呼び出すため、チェックがうまくいかない場合は次のようになります。

$.preloadImages({
  urls: [nextImage],

そのカウントは1に下がり、最後の画像だけでなく、最初の画像の後のセットの最初の画像以降のすべての画像がif評価されます(コールバックが実行されるときに時間的にオーバーラップするため)。これにより、コールバックは多くの画像を起動します。 1回だけではなく、次のコードを使用します。truecomplete

$.preloadImages({
 urls: preloadImages,
 complete: function() { showProperty(property); }
});

...そのcomplete関数が度も実行されていることを確認しているため、同時に多くの間隔を開始しています(これがconsole.log('show property called' + property.slug)、ログで何度も実行されていることがわかる理由です)。

簡単な修正:preloadImagesコードをグローバル変数を使用しないバージョンに置き換えます:)

于 2010-06-16T01:41:55.183 に答える