画像ギャラリーに使用している 2 つの配列があります。上部に、必要なさまざまなギャラリーの ID を含むナビゲーションがあります。リンクの 1 つがクリックされると、対応する配列が読み込まれ、その中の画像が表示されるようにしたいと考えています。私のコードは次のようになります: HTML:
<div id="gallery>
<div id="slideshow-container">
<img src="images/someimg.jpg" id="current-img" />
</div>
</div>
jQuery:
var gallery1 = ['images/img1.jpg', 'images/img2.jpg', 'images/img3.jpg']
var gallery2 = ['images/img4.jpg', 'images/img5.jpg', 'images/img6.jpg']
jQueryの仕組みをよりよく理解できるように、プラグインを避けたいので、画像のスライドショーを作成するためにこのチュートリアルを使用していました。したがって、私のjQueryの残りの部分は似ています:
編集: クリック関数を @nullability が提案したものに変更しましたが、インデックスを関数に渡す方法がわかりません。すべての関数で渡す場所に入力しようとしましたが、ifif (i < index.length - 1){
行でまだインデックスが未定義であるというエラーが発生します。
$(document).ready(function(){
setInterval(advanceImage, 4000)
})
//Creates array variable based on what user clicks
$('.nav li a').click(function(e) {
e.preventDefault();
var index = $(this).data('index');
changeImage(index);
//alert(gallery);
});
//Creates a current image from array
function currentImage(){
i = jQuery.inArray($('#current-img').attr('src'), index);
return i;
}
//Cycles through array
function advanceImage(){
currentImage();
if (i < index.length - 1){
changeImage(i + 1);
}else{
changeImage(0)
}
}
//Change current image to whatever i gives it
function changeImage(i){
$('#current-img').stop().animate({
opacity: 0,
}, 200, function(){
$('#current-img').attr('src', index);
$('#slideshow-container img').load(function(){
$('#current-img').stop().animate({
opacity: 1,
}, 200)
})
})
}
次のように配列を手動で選択することで、画像を表示および回転させることgallery[0,0]
がgallery[0,1]
できます。
編集:2つの別々の配列に変更しました。次のような機能はありませんでした:
$('.nav li a').click(function() {
var gallery = $(this).attr('id');
});
ギャラリーを他のコードに入れて、クリックされたものを選択させますか?