Javascript.RU

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

Проблема с наведением
Есть следующая картина.
<div class="kartinka">
<img src="1.jpg" data-foto="1.jpg, 2.jpg, 3.jpg, 4.jpg, 5.jpg">
</div>
<script>
  document.querySelectorAll('.kartinka img').forEach(img => {
    let foto = img.dataset.foto.split(", ")
    let current = 0
    let interval
    img.addEventListener('mouseenter', function() {
      console.log('hi')
      interval = setInterval(function() {
        current++
        if (current >= foto.length) {
          current = 0
        }
        img.src = foto[current]
      }, 1000)
    })
    img.addEventListener('mouseleave', function() {
      img.src = foto[0]
      clearInterval(interval)
    })
  })
</script>


А вот как сделать что бы он при наведении на div менял картинки не знаю. Пробовал $('.kartinka').on('mouseleave', function() { но когда этих элементов много то меняет на всех картинках.
понимаю что скорее всего беру не так querySelectorAll но как нужно не пойму.
Спасибо за любой пинок.

Последний раз редактировалось ArtemovK, 28.10.2019 в 18:39.
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2019, 18:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А с чего такая уверенность, что картинки без заторинки будут грузиться через 1 сек да еще с интервалом?
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2019, 18:33
Новичок на форуме
Отправить личное сообщение для ArtemovK Посмотреть профиль Найти все сообщения от ArtemovK
 
Регистрация: 28.10.2019
Сообщений: 3

Ну как бы работают. смена в 1сек вполне если картинки не hd
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2019, 18:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от ArtemovK
5,jpg
Сообщение от ArtemovK
fotos
исправьте
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2019, 18:40
Новичок на форуме
Отправить личное сообщение для ArtemovK Посмотреть профиль Найти все сообщения от ArtemovK
 
Регистрация: 28.10.2019
Сообщений: 3

Поправил спасибо. Но это я тут опечатался в коде все хорошо
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2019, 18:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

ArtemovK,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .kartinka img{
        width: 100px;
        height: 100px;
        margin-top: 25px;
    }
   div.kartinka{
      width: 150px;
      height: 150px;
      background-color: #F0E68C;
      text-align: center;
   }

  </style>
</head>

<body>
<div class="kartinka">
<img src="http://f.artek-ekb.ru/source/1/phXRDS4G3Y9-7p3KD1L5cS19nPF9LDk3.png" data-foto="http://f.artek-ekb.ru/source/1/phXRDS4G3Y9-7p3KD1L5cS19nPF9LDk3.png, https://photoshop-kopona.com/uploads/posts/2018-09/1536740086_02.jpg, https://img2.freepng.ru/20190610/kisspng-red-number-numerical-digit-color-portable-network-5cfe262e223146.4851514915601597901401.jpg">
</div>
<div class="kartinka">
<img src="http://f.artek-ekb.ru/source/1/phXRDS4G3Y9-7p3KD1L5cS19nPF9LDk3.png" data-foto="http://f.artek-ekb.ru/source/1/phXRDS4G3Y9-7p3KD1L5cS19nPF9LDk3.png, https://photoshop-kopona.com/uploads/posts/2018-09/1536740086_02.jpg, https://img2.freepng.ru/20190610/kisspng-red-number-numerical-digit-color-portable-network-5cfe262e223146.4851514915601597901401.jpg">
</div>
<script>
  document.querySelectorAll('.kartinka').forEach(div => {
    const img = div.querySelector('img');
    let fotos = img.dataset.foto.split(", ")
    let current = 0;
    let interval;
    div.addEventListener('mouseenter', function() {
      clearInterval(interval)
      interval = setInterval(function() {
        current = ++current % fotos.length;
        img.src = fotos[current]
      }, 1000)
    })
    div.addEventListener('mouseleave', function() {
      clearInterval(interval);
      current = 0;
      img.src = fotos[current]
    })
  })
</script>

</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 28.10.2019, 18:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ArtemovK
Ну как бы работают
Как бы не считается, если таким образом, то сначала предварительная загрузка, а затем слайды, либо ждем загрузку, а затем показ очередной.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена background при нажатии JIeuTo Общие вопросы Javascript 5 14.09.2018 18:48
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12