私はここ数日間、この半特定の問題を理解しようとしてきましたが、本当に別の目を使うことができました。
私の目標は、ページに画像を表示することです。最初は静的 png で、クリックすると .gif に切り替わり、アニメーションが再生されます。もう一度クリックすると、再びスワップし、2 番目の .gif アニメーションを再生します。3回目も同じことをします。3 番目の .gif をクリックすると、最初の gif アニメーションが再び再生され、プロセスが最初からやり直されます。
私の問題は、複数の画像がページに読み込まれ、一部には合計 3 つの gif アニメーションがあり、一部には 2 つ、一部には 1 つあるということです。
だから私がやろうとしているのは、次のものをロードする前に .gif が存在するかどうかを確認することです。
これは私の表記の一部を抜粋したものです...
$('#postContainer img').click(function () {
imgSrc = $(this).attr('src');
if(imgSrc.indexOf('_B.png') != -1){
imgSrcToUse = imgSrc.replace('_B.png', '_pt1.gif');
$(this).attr('src', imgSrcToUse);
return false;
}
上記のコードは、画像がクリックされると実行されます。画像 src を見つけて、静的 png を最初のアニメーション gif に置き換えます。すべての画像にはアニメーション GIF が含まれているため、これは問題ではありません。
if (imgSrc.indexOf('_pt1.gif') != -1) {
var POS2 = imgSrc.replace('_pt1.gif', '_pt2.gif');
$.ajax({
url: POS2,
type: 'HEAD',
error: function() {
alert('error');
imgSrcToUse = imgSrc.replace('_pt1.gif', '_pt1.gif');
},
success: function() {
alert('success');
imgSrcToUse = imgSrc.replace('_pt1.gif', '_pt2.gif');
}
});
$(this).attr('src', imgSrcToUse);
return false;
}
がロードされた後_pt1
、次にクリックしたときにこの関数が実行されます。が存在するかどうかを確認し、_pt2
存在する場合は、pt1 を pt2 と交換することになっています。ただし、2回目のクリックでのみ機能しているようです。一度クリックすると、_pt1
再度読み込まれ、2 回目には_pt2
正しく読み込まれます。これが私の最大の問題点です...
これが複雑な場合は申し訳ありませんが、ここで本当に困惑しています。皆さんがあまりにも混乱している場合は、物事を解決するために最善を尽くします.