Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.06.2015, 16:49
Новичок на форуме
Отправить личное сообщение для nyshka Посмотреть профиль Найти все сообщения от nyshka
 
Регистрация: 09.05.2015
Сообщений: 8

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

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);

}
});
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не корректно работает slice Dotod Общие вопросы Javascript 20 30.01.2010 23:31
свойство innerHTML в Opera и Firefox работает не корректно? figaro Javascript под браузер 1 05.11.2009 00:57
Opera не корректно работает со скриптом Anat.nem Opera, Safari и др. 4 30.10.2009 13:39
Скрипт В IE отрабатывает корректно, но не работает в FF 3.5 Sonkkorh AJAX и COMET 11 27.07.2009 19:03
В объекте не корректно работает инкремента (++ или +=1)) Bratok Общие вопросы Javascript 2 28.04.2009 01:28