スライドが上手くいきません。
Q&A
Closed
解決したいこと
コード自体は色んなページを参考にしたので大丈夫だと思うのですが、
コンソールを確認すると何故か上手くできないです。。
どこがおかしいのか教えて頂きたいです。
コンソールで確認
右の矢印をクリックすると一個目は上手くスライドできました。
pagesNum 0
pages (4) [0, -600, -1200, -1800]
pagesNum 1
pages[pagesNum] -600
その後もう一回クリックすると同じ値が出てスライドできません。
原因はpagesNumに +1 されてないから?
pagesNum 0
pages (4) [0, -600, -1200, -1800]
pagesNum 1
pages[pagesNum] -600
pagesNum 0
pages (4) [0, -600, -1200, -1800]
pagesNum 1
pages[pagesNum] -600
該当するソースコード
<div class="slider-wrap">
<div class="slider-area">
<ul class="slider-list clearfix">
<li><img src="img/1.jpg" alt=""></li>
<li><img src="img/2.jpg" alt=""></li>
<li><img src="img/3.jpg" alt=""></li>
<li><img src="img/4.jpg" alt=""></li>
</ul>
<button type="button" class="slider-ctrl-btn prev" data-ctrl="prev"></button>
<button type="button" class="slider-ctrl-btn next" data-ctrl="next"></button>
</div>
</div>
<script defer>
window.addEventListener( 'load', function(){
$(".slider-ctrl-btn").click(function () {
let pages = [];
let numCount = $('.slider-list li').length;
let num = 0;
let pagesNum = 0;
for(let i = 0; i < numCount; i++){
if (i == 0) {
pages.push(0);
} else {
num += - $('.slider-list li').eq(i).width();
pages.push(num);
}
}
console.log('pagesNum', pagesNum);
console.log('pages', pages);
if ($(this).data('ctrl') === 'next') {
let step = 1;
pagesNum = pagesNum + step;
if (pagesNum === pages.length) {
pagesNum = 0;
}
console.log('pagesNum', pagesNum);
console.log('pages[pagesNum]', pages[pagesNum]);
$(".slider-list").animate({left: pages[pagesNum]})
} else if ($(this).data('ctrl') === 'prev') {
let back = -1;
pagesNum = pagesNum + back;
if (pagesNum === -1) {
pagesNum = pages.length - 1;
}
console.log('pagesNum', pagesNum);
console.log('pages[pagesNum]', pages[pagesNum]);
$(".slider-list").animate({left: pages[pagesNum]})
}
});
}, false);
自分で試したこと
if文以下がおかしいと思うので、1つずつどんな動きをするのか手探りしながらいじっていたのですが、結局どこがおかしいのか分かりませんでした。。。
是非教えて頂きたいです。
宜しくお願い致します。
0