Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.11.2015, 12:03
Новичок на форуме
Отправить личное сообщение для Влад Корбруд Посмотреть профиль Найти все сообщения от Влад Корбруд
 
Регистрация: 16.11.2015
Сообщений: 1

Помогите реализовать простую галерею лучшим способом
Всем привет! Я тотал нуб в javascript. Задача сделать галерею на чистом JS с двумя стрелками для перехода и кликом по превью. Я решил ее таким образом:
//      НАЧАЛЬНЫЕ ЗНАЧЕНИЯ
var menu = document.getElementById("menu-preview");
var colorborder = "rgb(231, 76, 60)";
var offset = 121;
var images = document.getElementById("menu-preview").getElementsByTagName("img");
var currentImg = 0;
document.getElementById("mainimage").src = images[currentImg].src;
images[0].style.borderColor = colorborder;
prev = document.getElementById("prevbtn");
prev.onclick = function () {
    prevchangeImg(event);
};
next = document.getElementById("nextbtn");
next.onclick = function () {
    nextchangeImg(event);
};
goto = document.getElementById("menu-preview");
goto.onclick = function () {
    changeImg(event);
};

//      ФУНКЦИИ ПЕРЕХОДА
function prevchangeImg(event) {
    if (currentImg >= 0) {
        if (currentImg < images.length - 1) {
            menu.scrollLeft = menu.scrollLeft - offset;
        }
        document.getElementById("mainimage").src = images[currentImg - 1].src;
        clear();
        currentImg = currentImg - 1;
        images[currentImg].style.borderColor = colorborder;
        checknav();
    }
}

function nextchangeImg(event) {
    if (currentImg >= 0) {
        if (currentImg >= 1) {
            menu.scrollLeft = menu.scrollLeft + offset;
        }
        document.getElementById("mainimage").src = images[currentImg + 1].src;
        clear();
        currentImg = currentImg + 1;
        images[currentImg].style.borderColor = colorborder;
        checknav();
    }
}

//      СБРОС ЦВЕТА ГРАНИЦ
function clear() {
    for (var i = 0; i < images.length; i++) {
        images[i].style.borderColor = '#E5E5E5';
    }
}

//      НАЖАТИЕ НА ИЗОБРАЖЕНИЕ
function changeImg(event) {
    event = event || window.event;
    var targetElement = event.target || event.srcElement;
    if (targetElement.tagName == "IMG") {
        document.getElementById("mainimage").src = targetElement.src;
        clear();
        targetElement.style.borderColor = colorborder;
        for (var i = 0; i < images.length; i++) {
            if (images[i].style.borderColor == colorborder) {
                currentImg = i;
                checknav();
            }
        }
    }
}

//      ПРОВЕРКА НАВИГАЦИИ
function checknav() {
    if (currentImg == 0) {
        prev.className = " ";
        prev.className = "leftbutton disabled";
    } else {
        prev.className = " ";
        prev.className = "leftbutton";
    }
        if (currentImg == images.length-1) {
        next.className = " ";
        next.className = "rightbutton disabled";
    } else {
        next.className = " ";
        next.className = "rightbutton";
    }
}

Т.е. пляшу от цвета рамки, что не устраивает. Как сделать это все правильно? Любые комментарии приветствуются. На всякий случай html:
<div class="gallery">
    <img id="mainimage" class="bigimage">
       <a href="#" id="prevbtn" class="leftbutton disabled"><</a><a href="#" id="nextbtn" class="rightbutton">></a>
    <div id="menu-preview" class="thumbnails-bar">
        <img src="images/GC4340500x500.jpg" class="thumbnail">
        <img src="images/GC2652500x500.jpg" class="thumbnail">
        <img src="images/GC8225500x500.jpg" class="thumbnail">
        <img src="images/HD7861SilverSenseo500x500.jpg" class="thumbnail">
        <img src="images/HP4666HairStraightener500x500.jpg" class="thumbnail">
        <img src="images/JK134500x500.jpg" class="thumbnail">
        <img src="images/Salterkitchenscales500x500-1.jpg" class="thumbnail">
        <img src="images/VKJ138500x500.jpg" class="thumbnail">
        <img src="images/HP6408_03500x500.jpg" class="thumbnail">
        </div>
    </div>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите реализовать отображение для аддона к mozilla. Ingiborn Firefox/Mozilla 3 28.01.2014 19:23
Помогите советом! Как реализовать идею? lazerru Общие вопросы Javascript 9 27.02.2013 15:52
Ребята помогите правильно реализовать цепочки функций как в jquery mrgordon Общие вопросы Javascript 6 04.06.2012 20:40
Помогите реализовать! strannik17 Элементы интерфейса 3 07.03.2011 15:48
Помогите реализовать beilec Элементы интерфейса 7 06.03.2011 21:55