Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   не корректно работает слайд-шоу (https://javascript.ru/forum/dom-window/56149-ne-korrektno-rabotaet-slajjd-shou.html)

nyshka 01.06.2015 16:49

не корректно работает слайд-шоу
 
Здравствуйте, нужно сделать слайдшоу, где картинки выезжают по клику слева, останавливаются в центре, по клику справа уезжают в право.
Вот код, но работает не верно, помогите пожалуйсто найти ошибку.

var sShowBlock = document.getElementById("ssh"), // блок содержащий картинки

// координаты картинок из аттрибута "img-coordinates"
x = sShowBlock.getAttribute("img-coordinates").split(" ")[0],
y = sShowBlock.getAttribute("img-coordinates").split(" ")[1],

// количество картинок из аттрибута "count"
amount = parseInt(sShowBlock.getAttribute("count")) || 1,

// фрагмент имени картинки без номера из аттрибута "begin-name"
imgName = sShowBlock.getAttribute("begin-name") || "",

countImg = 1; // счетчик (текущий номер картинки)

document.getElementById("next").addEventListener(" click", slt, false);
document.getElementById("prev").addEventListener(" click", slt, false);

addImg();

function addImg(n, btn) { // создает (добавляет) картинку в слайд-шоу

btn = btn || "front";
n = n || 1;

var img = document.createElement("img");

img.style.cssText = " display:block; position:absolute; top:" + y + "px; left:" + x + "px";
img.src = "img/" + imgName + n + ".jpg";

if (btn === "front") // добавить на передний план
sShowBlock.appendChild(img)
else if (btn === "back" && sShowBlock.firstElementChild) // добавить на задний план
sShowBlock.insertBefore(img, sShowBlock.firstElementChild);

return img;

}

function slt(ev) { // смена слайдов

var targetClick = ev.currentTarget;

// защита от "девиантных" кликов на время смены слайда
targetClick.removeEventListener("click", slt, false);

switch (targetClick.id) {

case "next":

if (countImg === amount) // цикличность смены слайдов
countImg = 0;

addImg(++countImg, "back");

break;

case "prev":

if (countImg === 1) // цикличность смены слайдов
countImg = amount + 1;

addImg(--countImg, "back");

break;

}

// картинка переднего плана
TweenLite.to(sShowBlock.lastElementChild, 0.5, {
css : {
opacity : 0
},
onComplete : function () {

// удаление (уже невидимой) картинки переднего плана
sShowBlock.removeChild(sShowBlock.lastElementChild );

// прослушивание события вернуть клика в "исходное состояние"
targetClick.addEventListener("click", slt, false);

}
});
}


Часовой пояс GMT +3, время: 04:00.