바이올린 : https://jsfiddle.net/8na2n5L2/자바 스크립트/jQuery를 이미지 슬라이더 문제
내가 이미지 슬라이더를 만들려고 해요,하지만 몇 가지 이유로 그냥이 작동하지 않는 이유는 주위에 내 머리를 정리하고 수 없습니다. 나는 기본적으로 이미지가 오른쪽 (화면에서 벗어남)에서 들어오는 슬라이더를 만들고, 중심 이미지는 왼쪽 (화면에서 벗어남)으로 푸시하려고합니다. 그런 다음 왼쪽 이미지가 다시 센터로 갈 때가되면 중앙으로 가기 전에 다시 오른쪽으로 빠르게 돌아갑니다.
jQuery를 (문서) .ready (함수() {
var images = [];
//store the images in an array
jQuery('.main-image-slider').each(function() {
images.push(jQuery(this));
});
var i = 0;
var max = images.length - 1;
setInterval(function() {
if (i > max) {
i = 0;
}
images[i].removeClass('main-image-slider-left').addClass('main-image-slider-right').delay(100).queue(function() {
images[i].removeClass('main-image-slider-right').addClass('main-image-slider-center').dequeue();
i++;
});
if (images[i - 1]) {
images[i - 1].removeClass('main-image-slider-center').addClass('main-image-slider-left');
}
}, 3000);
}); 코드가 images[i].removeClass('main-image-slider-right')...
를 실행 한 후, i++
이 먼저 실행 때문에
으로 변경했습니다. 다음 요일에 스 니펫이나 데모를 추가 할 수 있다면 좋을 것입니다. 어쨌든 짧은 예제이므로 증분 직전 상태에서 오류가 발생한다고 가정합니다. 'if (images [i-1])'- 첫 번째 반복에서 -1 번째 요소에 대한 참조 일 수 있습니다. 배열은 인덱스가 0이고 -1이 아니기 때문에 결코 존재하지 않을 것입니다. 대신 이전 이미지를 i> 0으로, i === 0 일 때 이전 이미지를 인덱스 이미지에 표시 할 수 있습니다. [max] – lmenus
희망이 있습니다. 'var previous = i> 0을 만들겠습니까? images [i-1] : images [max];'그런 다음 오류 조건이 전혀 필요 없으며'previous.removeClass()'등을 할 수 있습니다. – lmenus
다음에 디버깅을위한주의 사항 : 어떤 라인에서 에러가 발생했는지, 이것이 시작입니다. 그 상태가 잘못되었음을 알 수 있습니다. 당신이 배열 항목에 접근하고 있고 콘솔이'undefined'타입에 대해 불평하고 있었기 때문에, 당신은 유효하지 않은 인덱스에 접근하고 있음을 의미합니다. 그건 그다지 문제가 아니지만, 그때 당신은'removeClass()'메소드를 호출하려고했기 때문에 콘솔이 불평하는 이유가 있습니다. undefined는 그런 속성을 가지고 있지 않습니다. 그로부터, 존재하지 않는 요소에 액세스하고 있음을 공제 할 수 있습니다. 희망이 도움이 – lmenus