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

onload event erstellen

Bildwechsel ist noch ein übrigbleibsel von einer Funktion die ich versucht habe. Diese werde ich dann aber wieder mit aufnehmen.
Und die PHP.php wird zusätzlich noch mit den PHP-Funktionen echo und foreach entsprechend erweitert? Ist das dann so korrekt oder muss noch mehr gemacht werden? Komm da gerade leider nicht weiter....
 
Zuletzt bearbeitet:
Code:
<div id="Galerie">
                    <script type="text/javascript">
                                  <?php include('../PHP.php'); ?>
                                  </script>
                    <a id= Galerie><img id=Galerie></a>
Ich nehme an, da soll das HTML mit den Thumbnails und den Links hin? Dabei brauchst Du die Script-Tags nicht, weil die PHP-Anweisung kein Javascript ist.

Attribute solltest Du in Hochkommas setzen und eine ID muss seitenweit eindeutig sein.

Dieses PHP-Skript muss etwas anders aussehen als das erste, daher würde ich es in einer anderen Datei als das erste ablegen.
Müsste etwa so aussehen (ungetestet):
PHP:
$images = glob("screenshots/*.jpg");
for ($i = 0; $i < count($images); $i++) {
    echo '<img src="' . $images[$i] . '" onclick="Bildwechsel(' . $i . ')">';
}
Wie Du siehst, habe ich nicht foreach sondern for genommen, weil man offenbar den Index für die Funktion Bildwechsel benötigt. Soweit ich es überblicke, brauchst Du an dieser Stelle kein a-Tag, weil Du das onclick direkt im img-Tag notieren kannst.
Fast immer gibt es mehrere Wege, die zum Ziel führen: Man könnte die HTML-Elemente auch mit Javascript erzeugen und einfügen auf Basis des Arrays, was man mit dem ersten PHP-Skript erzeugt. Ich glaube aber, mit PHP ist es einfacher und besser zu lesen.

- - - Aktualisiert - - -

PS: Ich sehe gerade noch, dass Du in der Funktion Bildwechsel() einen Fehler gemacht hast: Diese Syntax braucht man nur, wenn man in HTML einen Eventlistener registriert.
So ist es richtig:
Code:
function Bildwechsel(idx) { 
    document.getElementById('light').style.display='block';
    document.getElementById('fade').style.display='block';
    // hier musst Du wahrscheinlich noch das src-Attribut für das große Bild setzen
}
 
Zuletzt bearbeitet:
Ja genau, hier soll das HTML mit den Thumbnails hin.
Auf der Seite zeigt er statt dem Bild jetzt allerdings den Inhalt der php2 an
 
Zuletzt bearbeitet:
Du musst das Ganze als *.php abspeichern, damit es vom Server geparst wird...
 
Du musst außerdem in der PHP2.php natürlich auch den öffnenden <?php und schließenden ?>-Tag verwenden.
 
... und damit das Ganze dann auch funktioniert, musst Du entsprechend meinem Hinweis in der Funktion Bildwechsel() auch das Bild anzeigen:
Code:
function Bildwechsel(idx) { 
    document.getElementById('light').style.display='block';
    document.getElementById('fade').style.display='block';
    num = idx;
    slideshow(num); 
}
 
Du musst außerdem in der PHP2.php natürlich auch den öffnenden <?php und schließenden ?>-Tag verwenden.

Den Wald vor lauter Bäumen nicht gesehen!

Jetzt zeigt er mir die Bilder auf der Seite an, allerdings funktionieren die vor- und zurück Funktion in der Lightbox nun nicht mehr. Muss ich dazu noch einen zusätzlichen Parameter übergeben?
 
Ist etwas in der Fehlerkonsole zu sehen?
Poste doch mal die URL der Seite, damit man sich das im Zusammenhang ansehen kann.
Edit: Habe den Code wiedergefunden und bei mir funktioniert er einwandfrei. Hattest Du meinen Hinweis aus #67 umgesetzt?
 
Zuletzt bearbeitet:
Habe deinen Hinweis befolgt und in der Konsole ist leider nichts diesbezüglich zu sehen. Eine Seiten URL gibt es wie etwas früher schonmal erwähnt nicht dazu, da ich nur privat daran bastel.
 
Zuletzt bearbeitet:
In dem Code, den Du gepostet hast, vermisse ich die PHP-Anweisung, wo das Array imgArray gefüllt wird. Ich glaube, Du hattest das in eine PHP-Datei ausgelagert. Hast Du das drin?
Und werden die Thumbnails richtig angezeigt?
 
Es funktioniert alles wunderbar, bis eben auf die Tatsache, dass die next und back Funktion bei den Bildern in der Slideshow nicht funktionieren, sprich die Thumbnails werden richtig angezeigt. Ich hatte ansonsten nur noch die .php datei für die Slideshow ganz am Anfang. Ansonsten eben nur die .php Datei im vorherigen Post.
 
Hm, kann den Fehler weder beim Lesen des Codes finden, noch ihn bei mir reproduzieren. Besorg dir doch mal ein Konto z. B. bei bplaced.net und lade es dort hoch, damit man es mit dem Debugger untersuchen kann. Oder installiere bei dir Firebug und untersuche es selbst damit.
 
Bekomme folgende Meldung, wie du bereits vermutet hast:
Uncaught ReferenceError: imgArray is not defined script.js:118 slideshowUpscript.js:139 keydownGalerie.php:16 onkeydown

Allerdings sind diese doch belegt, oder wird dabei etwas nicht übergeben?
 
Zuletzt bearbeitet von einem Moderator:
Also ist imgArray nicht definiert. Du schreibst, dass alles außer den Vor- und Zurückknöpfen funktioniert. Das habe ich so verstanden, dass das Öffnen der Lightbox funktioniert. Und dies geht doch ebenfalls über die Funktionen Bildwechsel() und slideshow() und den Zugriff auf imgArray. D. h. wenn Bildwechsel() slideshow() aufruft, funktioniert es, und wenn slideshowUp() slideshow() aufruft, funktioniert es nicht? Verstehe ich nicht.
Poste doch mal das Vorbesetzen von imgArray im Zusammenhang.

- - - Aktualisiert - - -

Jetzt verstehe ich es: Das Blättern mit den Pfeiltasten funktioniert nicht. Der Grund ist, dass Du hier
Code:
function keydown(ev) {
    if ( event.keyCode === 27 ) {
mit dem Bezeichner "event" zugreifst und der ist nicht definiert. So ist es richtig:
Code:
function keydown(ev) {
    if ( ev.keyCode === 27 ) {
 
Zuletzt bearbeitet:
Nein nicht ganz, nicht nur das blättern mit den pfeiltastend funktioniert nicht, auch die Vor- und Zurückknöpfe funktionieren nicht.
Also ich öffne die light box und nur die esc-taste und der x-button funktionieren.
 
Konnte den Fehler jetzt eingrenzen. Ich habe an dem Code vor ein paar Wochen herumgebastelt, um ein paar Dinge auszuprobieren, dabei habe ich den funktionierenden Code an einer Stelle (ich vermute stark in der .js-Datei) überschrieben. In der Konsole zeigt er mir den folgenden Fehler an:
Uncaught ReferenceError: imgArray is not defined script.js:126 slideshowBackscript.js:136 keydownGalerie.php:16 onkeydown

Ich gehe davon aus, dass ich bei der Galerie Funktion aus versehen etwas gelöscht habe.

Kannst du vielleicht deinen funktionierenden Code posten, bzw. mir schicken? bin gerade etwas ratlos.
 
Zuletzt bearbeitet:
Bitte, hier ist der Code, den ich gespeichert habe:
Code:
<!DOCTYPE html>
<html>
    <head>
        <title>Lightbox selbstgemacht</title>
        <style>
                        /* Galerie */
            
            div#Galerie a img {
                position: relative; 
                top: 0; 
                left: 0;
                float: left;
                margin: 50px;
                width: 250px;
                height: 200px;
                border: 2px;
            } 
            
            /* Galerie Ende*/
            
            /* Lightbox */
            
            .black_overlay{
                display: none;
                position: fixed;
                top: 0%;
                left: 0%;
                width: 100%;
                height: 100%;
                background-color: black;
                z-index:1001;
                -moz-opacity: 0.8;
                opacity:.80;
                filter: alpha(opacity=80);
                padding: 0px;
            }
            
            .white_content {
                display: none;
                position: fixed;
                top: 25%;
                left: 22%;
                height: 370px;
                z-index:1002;
                overflow: auto;
            }
            
            div#light img {
                width: 790px;
                height: 340px;
            } 
            
            div#previous a{
                font-family: Verdana, Helvetica, Arial, sans-serif;
                font-size: 16px;
                line-height: 1.5em;
                color: white;
                position: absolute;
            
            } 
            
            div#next a{
                font-family: Verdana, Helvetica, Arial, sans-serif;
                font-size: 16px;
                line-height: 1.5em;
                color: white;
                align: right;
                position: absolute;
                right: 20px;
            
            } 
            
            div#exit a{
                font-family: Verdana, Helvetica, Arial, sans-serif;
                font-size: 16px;
                line-height: 1.5em;
                color: black;
                align: right;
                position: absolute;
                left: 0px;
                top: 0px;
            } 
        </style>
    </head>
    <body onkeydown="keydown(event);">
        <script>
            var num=0; 
            
            function slideshow(slide_num) { 
              document.getElementById('imggallery').src=imgArray[slide_num];
            } 
            
            function Bildwechsel(idx) { 
                document.getElementById('light').style.display='block';
                document.getElementById('fade').style.display='block';
                num = idx;
                slideshow(num);
            }
            
            function slideshowUp() { 
              num++; 
              num = num % imgArray.length; 
              slideshow(num);
            
            } 
            
            function slideshowBack() { 
              num--; 
              if (num < 0) {num=imgArray.length-1;} 
              num = num % imgArray.length; 
              slideshow(num); 
            }
            
            function keydown(ev) {
                if ( ev.keyCode === 27 ) {
                    document.getElementById('light').style.display='none';
                    document.getElementById('fade').style.display='none';
                }
                else if ( ev.keyCode === 37 ) {
                    slideshowBack();
                }
                else if ( ev.keyCode === 39 ) {
                    slideshowUp();
                }
            
            };
            var imgArray = <?php echo json_encode(glob("bilder/[0-9]*.jpg")); ?>;
        </script>
        <div id="Content">
            <h1>Bildergalerie</h1>
            <div id="Galerie">
                <?php
                    $images = glob("bilder/[0-9]*.jpg");
                    for ($i = 0; $i < count($images); $i++) {
                        echo '<img src="' . $images[$i] . '" onclick="Bildwechsel(' . $i . ')">';
                    }
                ?>
                <a id="Galeria"><img id="Galerie"></a>

                <div id="light" class="white_content"><img src="http://forum.jswelt.de/Bilder/Galerie/holzbrett.jpg" id="imggallery" name="gallery" border="0">
                    <div id="previous"><a href="#" onclick="slideshowBack(); return false;">« Previous</a></div>
                    <div id="next">
                    <a href="#" onclick="slideshowUp(); return false;"> Next »</a></div>
                    <div id="exit"><a href="javascript:void(0)" onclick="document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">X</a></div>
                </div>
                <div id="fade" class="black_overlay"></div>
            </div>
        </div>
    </body>
</html>
Ist alles inline, ggf. musst Du wieder auslagern. Und die Bilderpfade musst Du anpassen.
 
Zuletzt bearbeitet:
Der Unterschied zu meiner Seite besteht in diesem Codestück:
Code:
var imgArray = <?php echo json_encode(glob("bilder/[0-9]*.jpg")); ?>;
Also bei mir
Code:
var imgArray = <?php echo json_encode(glob("../Bilder/Galerie/holzbrett.jpg")); ?>;
Was auch den Fehler erklärt den ich bekomme:
Uncaught Reference Error: imgArray is not defined script.js:107
slideshow script.js:107
Bildwechsel script.js:114
onclick Galerie.php:59

Wo und wie muss ich das den wieder einbauen?
 
Zuletzt bearbeitet:
Zurück
Oben