Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 09.02.2022
Сообщений: 22
1

Функция смены картинки по нажатию на элементы

13.02.2022, 20:26. Показов 746. Ответов 8

Author24 — интернет-сервис помощи студентам
Приветствую.

Подскажите, пожалуйста, каким образом стоит правильно оформить код у данной функции? Не могу всё никак додуматься.

Основной смысл того, что происходит до и внутри функции:

Я создаю переменные со значениями правого и левого "селекторов", затем, указываю переменную с элементом на ссылку картинки (где она находится в DOM-структуре html-страницы), создаю массив с ссылками других картинок, чтобы в будущем их можно было изменять на простой клик мышкой по правому и левому "селекторам".
В самой функции, я записываю два условных оператора if, где 1 - left_side, а 2 - right_side, а также, создаю цикл for для перебора массива с ссылками на картинки.

А вот дальше я не особо понимаю - каким образом мне правильно отрегулировать их появление с помощью правого и левого "селекторов".
Вложение с картинкой и кодом приложу ниже, спасибо заранее за помощь!

JavaScript-структура:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Change Character Function
let lSideChange = document.querySelector('.to_left_side');
let rSideChange = document.querySelector('.to_right_side');
let checkerValue = document.querySelector('.char___img').src;
let charConfig = ['images/characters/sans.png', 
'images/characters/fell_sans.png', 
'images/characters/dust_sans.png', 
'images/characters/smile_sans.png'];
 
lSideChange.addEventListener('click', ChangeChar);
rSideChange.addEventListener('click', ChangeChar);
 
function ChangeChar(event) {
    if (event.currentTarget.className == 'to_left_side') {
        for (let index = 0; index < charConfig.length; index++) {
            if (charConfig[index] === checkerValue) {
                
            }
        }
    }
 
    if (event.currentTarget.className == 'to_right_side') {
        for (let index = 0; index < charConfig.length; index++) {
            if (charConfig[index] === checkerValue) {
                
            }
        }
    }
}
Изображения
 
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2022, 20:26
Ответы с готовыми решениями:

Таймер смены картинки
Доброго времени суток. Нужна помощь Пишу программу тестирования. Есть форма, на которой...

Подключение плавной смены картинки
Использую следующий скрипт для плавной смены картинки в header`е: &lt;script...

Bxslider, свои кнопки для смены картинки
Кто использует это слайдер подскажите, не работают кнопки переключатели картинок (next, prev) , по...

Скрипт смены картинки фона при клике
Скрипт смены картинки фона при клике! помогите пожалуйста, заранее спасибо!!!

Перестали отображаться картинки после смены имени пакета
Привет всем! Я новенький Android dev. Писал приложение и нужно было сменить имя пакета. Сделал все...

8
3502 / 1266 / 429
Регистрация: 24.07.2016
Сообщений: 1,889
13.02.2022, 21:57 2
А что это за переменная?
Javascript
1
let checkerValue = document.querySelector('.char___img').src;
Вы просто хотите менять адрес статической картинке, нажимая на кнопки право/лево, и в зависимости от кнопки, передвигаться по индексам массива с адресами charConfig вперёд/назад. Я правильно понимаю?
1
1 / 1 / 0
Регистрация: 09.02.2022
Сообщений: 22
13.02.2022, 22:21  [ТС] 3
Да, правильно понимаете.

Эта переменная - сама картинка в DOM-структуре. (тоесть её нужно менять из конфига на право-лево)

Просто я записал её наименование не особо логично, думаю, можно поменять.
0
3502 / 1266 / 429
Регистрация: 24.07.2016
Сообщений: 1,889
13.02.2022, 23:37 4
Лучший ответ Сообщение было отмечено Kurio как решение

Решение

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Change Character Function
let lSideChange = document.querySelector('.to_left_side'),
    rSideChange = document.querySelector('.to_right_side'),
    checkerValue = document.querySelector('.char___img'),
    charConfig = [
        'images/characters/sans.png', 
        'images/characters/fell_sans.png', 
        'images/characters/dust_sans.png', 
        'images/characters/smile_sans.png'
    ];
 
[lSideChange, rSideChange].forEach(e => e.addEventListener('click', ChangeChar));
 
function ChangeChar(e) {
    let src = checkerValue.getAttribute('src'),
        index = charConfig.indexOf(src);
    
    if(index !== -1) {
        if(e.currentTarget.classList.contains('to_left_side')) {
            if(index === 0) checkerValue.src = charConfig[charConfig.length - 1];
            else checkerValue.src = charConfig[index - 1];
        }
        if(e.currentTarget.classList.contains('to_right_side')) {
            if(index === charConfig.length - 1) checkerValue.src = charConfig[0];
            else checkerValue.src = charConfig[index + 1];      
        }       
    }
    else checkerValue.src = charConfig[0];
}
0
1 / 1 / 0
Регистрация: 09.02.2022
Сообщений: 22
13.02.2022, 23:49  [ТС] 5
Очень интересное решение)
Спасибо)
0
3502 / 1266 / 429
Регистрация: 24.07.2016
Сообщений: 1,889
13.02.2022, 23:52 6
Цитата Сообщение от Kurio Посмотреть сообщение
Очень интересное решение)
Работает хоть? )
0
1 / 1 / 0
Регистрация: 09.02.2022
Сообщений: 22
13.02.2022, 23:56  [ТС] 7
Да, всё работает.
0
3502 / 1266 / 429
Регистрация: 24.07.2016
Сообщений: 1,889
14.02.2022, 00:04 8
Кстати, пока не забыл, доставать значение src вот таким образом - плохая затея...
Javascript
1
let checkerValue = document.querySelector('.char___img').src;
Вы получите полный путь к картинке с протоколом и всеми patch-ами. Если имеете дело с относительными адресами изображений, то лучше использовать метод...
Javascript
1
img.getAttribute('src')
1
1 / 1 / 0
Регистрация: 09.02.2022
Сообщений: 22
14.02.2022, 00:22  [ТС] 9
Да, из-за этого у меня и не получалось нормально получить ссылку, чтобы ею манипулировать в будущем. Поэтому и появились проблемы)
Благодарю.
0
14.02.2022, 00:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2022, 00:22
Помогаю со студенческими работами здесь

Действия по нажатию на картинки
Нужно реализовать что-то подобное как на картине. Я так понимаю нужно на форме поместить главное...

Смена картинки по нажатию
Доброго всем времени суток! Прошу тапками не кидаться, я только учусь. В общем, какая проблема:...

Изменение картинки по нажатию
&lt;html&gt; Не могу знаю как по нажатию на картинку она менялась &lt;head&gt; &lt;meta http-equiv=Content-Type...

Увеличение картинки по нажатию
Привет всем подскажите как сделать так что бы при нажатию на картинку картинка увеличивалась в...

Массив,функция смены элементов
Доброго времени суток, уважаемые. Имеется проблема с написанием функции, которая бы находила и...

Функция смены текста по клику
Есть div со своим id, нужно по клику вызвать функцию, которая бы проверяла цвет и делала примерно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru