Я попытался показать картинки с массивом, чтобы я мог изменить его за задержку, как слайд-шоу. Проблема в том, что загрузится только первая картинка. при изменении счетчика массива изображение не загружается.

Все пути изображений правильные

<!DOCTYPE html>`enter code here`
<html lang="en">
<head>
     <meta charset="UTF-8">
    <title>Test2</title>
    <script>

        var bilder = []; 
        var zeit = 3000;
        var p = 0;

        bilder[0] = "../Bilder/Bild1.jpg";
        bilder[1] = "../Bilder/Bild2.jpg";
        bilder[2] = "../Bilder/Bild3.jpg";
        bilder[3] = "../Bilder/Bild4.jpg";

        function BildAutoWeiter()
        {
            document.bild.src = bilder[p]; 
            for( var i=0; i<= bilder.length; i++)                              
            {
                if(i <= bilder.length)
                {
                     p++;
                }
                else
                {
                    i = 0;
                }
            }
            setTimeout("BildAutoWeiter()", zeit);                       
        }
</script>
</head>
<body onload="BildAutoWeiter()">
<div>
    <img name ="bild" width="100%" height="50%">
</div>
</body>
</html>
1
CoreIce

1 ответ

Вам нужно использовать getElementsByName () , чтобы выбирать элементы по их name = '' . Это возвращает массив элементов, которые используют это name , поэтому для выбора конкретного используйте индекс [index] , начинающийся с 0. Сделайте это вместо этого:

document.getElementsByName('bild')[0].src = bilder[p]; 

Это выбирает первый элемент, который использует name = 'bild'

Кроме того, оператор for немного бесполезен. Вы могли бы вместо этого сделать:

function BildAutoWeiter()
{
  document.bild.src = bilder[p];
  p++;
  setTimeout(BildAutoWeiter, zeit);
}

Вам не нужно указывать имя функции в кавычках, и у вас не должно быть скобок при вызове функции в setTimeout .

58579925