FreshMeatInIT
@FreshMeatInIT
В замкнутом кругу

Почему с картинкой ничего не происходит?

У меня есть 2 картинки и я хочу, чтобы они сменялись с помощью js.
Имена прописаны правильно. Изначально ссылка на картинку пустая, а в js, по идее, должны подставляться нужные картинки. Отладчик выполняет код и молчит.
HTML

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>PZ5</title>
</head>
<body>
    <button name="start" onclick="start()">start</button>
    <button name="stop">stop</button>
    <img class="butterfly" name = "batterfly" src="" alt="">
    <script src="scr.js"></script>
</body>
</html>

CSS

body
{
    background-image: url(bg.jpg);
}
.butterfly
{
    margin-top: 40%;
}


JS
function sleep(milliseconds) 
{
    const date = Date.now();
    let currentDate = null;
    do {
      currentDate = Date.now();
    } while (currentDate - date < milliseconds);
  }
function start()
{
    imgslide = new Array();
    imgslide[0] = new Image();
    imgslide[1] = new Image();
    imgslide[0].src = "1.png";
    imgslide[1].src = "2.png";
    for (let index = 0; index < 20; index++) 
    {
        for (let i = 0; i < imgslide.length; i++) 
        {
            document.getElementsByClassName("butterfly").src = imgslide[i].src;
            sleep(500);
        }
    }
}

Если убрать функцию sleep(): всё-равно не работает.
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 1
MrDecoy
@MrDecoy
Верставший фронтендер
Потому что:
document.getElementsByClassName("butterfly") // возвращает HTML коллекцию, а не 1 конкретный элемент



Если будете использовать вместо getElementsByClassName- querySelectorAllто тогда можно будет сразу использовать .forEach без заимствования этого метода у прототипа.

P.s. а вообще искать в цикле элементы в DOM так себе затея. И не понятно зачем вам sleep и ещё ещё один цикл на 20 итераций. У Вас поток исполнения зависал напрочь и картинка(img в разметке) у вас всего одна, а вы в цикле обходите будто их много
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽