• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] slideshow Bilder sanft wechseln lassen

heiba

New member
Hallo, leider komme ich nicht weiter und könnte Hilfe gebrauchen.

Die Bilder sollen sanft wechseln und nicht abrupt.

Mein JavaSkipt Code sieht zur Zeit so aus:

HTML:
// Anzeigezeit in ms
var WechselZeit = 2000;

ImageArr = new Array()

// URL der Bilder  hier eintragen
ImageArr[ImageArr.length] = "01.jpg";
ImageArr[ImageArr.length] = "02.jpg";

var xAnzahl = ImageArr.length;
var xCounter=-1;

function Bildwechsel01() {
xCounter = xCounter+1;
  if (xCounter < xAnzahl) {
     document.getElementById('Foto01').src = ImageArr[xCounter];
     setTimeout ("Bildwechsel01()",WechselZeit);
     }
  else {
     xCounter = -1;
     Bildwechsel01();
     }
}

// Startverzögerung
setTimeout('Bildwechsel01()', 4000);

html Code:

<img id="Foto01" src="00.jpg" width="400" height="400" border="1" alt="">

Vilen Dank im voraus
 
Zuletzt bearbeitet von einem Moderator:
Dann nutze am besten eine css-Animation. Du wirst auch nicht drumherum kommen, zwei img-Elemente für die Transition zu verwenden.
 
Erstmal ein Willkommen im Forum.
Beim posten von code, bitte immer die Code-Tags richtig setzen. Auch ein Blick in die Fehlerkonsole ist öfters hilfreich.

Bei Variablen ist es besser, diese einheitlich zu formatieren und den ersten Buchstaben klein zu schreiben. Auch alle verwendete Variblen gleich zu Beginn mittsl var oder var-Block definieren:
Code:
var wechselZeit = 2000;
var imageArr = new Array(),
var xAnzahl = 0;
var xCounter = -1;
oder
Code:
var wechselZeit = 2000,
    imageArr = new Array(),
    xAnzahl = 0,
    xCounter = -1;
Arrays besser mit eckigen Klammern initialisieren imageArr = [] und nicht so imageArr = new Array(). Dieses kannst du auch im Block direkt befüllen und danach die Länge abfragen
Code:
// URL der Bilder hier eintragen
ImageArr = [
    "01.jpg",
    "02.jpg"
];
xAnzahl = imageArr.length;
Das kannst du natürlich, in der richtigen Reihenfolge, auch alles bei der Variablendefinition am Anfang machen und für später mal auch Kommentieren:
Code:
var wechselZeit = 2000,         // Wartezeit bis zum nächsten Wechsel
    imageArr = [                // URL der Bilder hier eintragen
        '01.jpg',
        '02.jpg'
    ],
    xAnzahl = imageArr.length,  // Anzahl der Bilder im Array
    xCounter = -1;              // Aktueller Index für das Bilderarray
Dem setTimeout() die Funktion nicht als String (Zeichenkette) übergeben, da diese sonst vorher noch evaluiert (eval()) werden muss und zu Problemen mit übergebenen Variablen führen kann. Einfach nur als Referenz übergeben setTimeout(bildwechsel01, 4000);Sollte die Funktion Parameter benötigen das mittels function () {...} übergeben:
Code:
setTimeout(function () {
    bildwechsel01(parameter_1, parameter_2);
}, 4000);
Alles zusammen sähe dann so aus:
Code:
var wechselZeit = 2000,         // Wartezeit bis zum nächsten Wechsel
    imageArr = [                // URL der Bilder hier eintragen
        '01.jpg',
        '02.jpg'
    ],
    xAnzahl = imageArr.length,  // Anzahl der Bilder im Array
    xCounter = -1;              // Aktueller Index für das Bilderarray

function bildwechsel01() {
    xCounter = xCounter + 1;
    if (xCounter < xAnzahl) {
        document.getElementById('Foto01').src = imageArr[xCounter];
        setTimeout (bildwechsel01, wechselZeit);
    } else {
        xCounter = -1;
        bildwechsel01();
    }
}

// Startverzögerung
setTimeout(bildwechsel01, 4000);

Zu deinem Animationsproblem, entwerder mittels CSS3-Animation, wie schon erwähnt, verwenden, oder eine JavaScript-Bilbiothek wie z.B. AniJS verwenden.
 
Hallo,

erst einmal einen herzlichen Dank für die Mühe.

Die Tipps nehme ich gerne an.

Ich habe es gleich ausprobiert, habe aber dennoch ein Problem und zwar,

manchmal lädt die Seite mit den wechselnden Bildern und manchmal nicht.

Habt ihr noch eine Idee woran es liegen könnte?

Vielen Dank im Voraus.
 
Leider ist die Webseite noch nicht online, es dauert noch bis alles soweit geschrieben ist.

Gibt es sonst eine andere Möglichkeit?

Oder gibt es vielleicht ein fertigen Skript, der die Bilder sanft wechseln lassen kann?

Danke im voraus.
 
Wenn du jQuery verwenden magst dann rudimentär sowas:
HTML:
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bilderwechsel</title>
    <style>
        /* Image container */
        #imageContainer {
            width: 400px;
            height: 400px;
            border: 1px solid black;
            overflow: hidden;
            position: relative;
        }

        /* Image elements for image container */
        .imageElement {
            display: none;
            width: 400px;
            height: 400px;
            border: 0;
            position: absolute;
            left: 0;
            top: 0;
        }
    </style>
    <script src="jquery-3.1.1.min.js"></script>
    <script>
        $(document).ready(function () {
            var wechselZeit = 2000,             // Wartezeit bis zum nächsten Wechsel
                imageArr = $('.imageElement'),  // URL der Bilder hier eintragen
                xAnzahl = imageArr.length,      // Anzahl der Bilder im Array
                xCounter = 0,                   // Aktueller Index für das Bilderarray
                lastImage = 0;                  // Index des zuletzt angezeigten Bildes

            $(imageArr[0]).show();              // Platzhalter anzeigen

            function bildwechsel() {
                xCounter = xCounter + 1;
                if (xCounter < xAnzahl) {
                    $(imageArr[xCounter]).fadeIn('slow', function () {
                        $(imageArr[lastImage]).hide().appendTo('#imageContainer');
                        lastImage = xCounter;
                        setTimeout (bildwechsel, wechselZeit);
                   });
                } else {
                    xCounter = 0;               // Index auf 0 setzen das beim nächsten wechsel der Platzhalter übersprungen wird
                    bildwechsel();
                }
            }
        
            // Startverzögerung
            setTimeout(bildwechsel, 4000);
        });
    </script>
</head>

<body>
    <div id="imageContainer">
        <img class="imageElement" src="00.jpg" alt="" />
        <img class="imageElement" src="01.jpg" alt="" />
        <img class="imageElement" src="02.jpg" alt="" />
    </div>
</html>
 
Hallo,

vielen Dank, habe es so übernommen.

Leider erscheinen nicht die Bilder, aber der Container.

Würde nochmal um Unterstützung bitten.

Vielen Dank im voraus.
 
Wie und wo testest du das denn? Lokaler Webserver?
Stimmen die Pfade und Dateinamen (auf Webserverumgebung Groß-/Kleinschreibung beachten) zu den Bildern?
 
Hallo,

habe bisher Microsoft Edge u. Firefox getestet.

Die Pfade und Dateinamen, wie auch bei der Webserverumgebung habe ich auf Groß-/Kleinschreibung geachtet.

Habe es nochmals geprüft, aber nichts gefunden.

Vielen Dank im voraus.

- - - Aktualisiert - - -

Hallo noch einmal,

habe alles noch einmal gelöscht und neu geschrieben, und siehe da es funktioniert.

Vielen Dank erst einmal dafür und tut mir Leid für das häufige nachfragen.

Habe aber dennoch eine Frage, bezüglich des Bildwechsels: Kann man den Übergang zum nächsten Bild weicher gestalten?

Vielen Dank im voraus.
 
Zurück
Oben