Beiträge von Sempervivum

    "Es produziert das selbe Ergebnis."
    Das verstehe ich nicht, bei mir hat es mit dem Titel, der unter dem Bild angezeigt wird, funktioniert. Und ich hatte nichts geändert, außer der Zeile, die ich gepostet habe. Hast Du die XML-Datei auch hochgeladen? Außerdem funktioniert es nur, wenn die Dateien auf einem Webserver liegen. Wenn Du es lokal testet, ist das u. U. nicht der Fall.

    "Wie nutze ich den Debugger?"
    Der Debugger ist browserspezifisch. Versuche, für deinen Lieblingsbrowser eine Anleitung zu finden.

    Das Problem liegt hier:

    JavaScript
    var titel = antwort.getElementsByTagName("bildtitel")[x];


    Damit ermittelst Du das HTML-Element, Du brauchst jedoch den inneren Text:

    JavaScript
    var titel = antwort.getElementsByTagName("bildtitel")[x].innerHTML;


    (Bei den anderen Parametern analog.)
    Wenn Du dich weiter mit Javascript befassen willst, solltest Du dich mit dem Debugger deines Browsers vertraut machen, damit findet mal solche Fehler relativ leicht.

    Die eigentlichen Fehler liegen hier:

    Code
    document.getElementById("vorschau").src = "bilder/1.jpg";


    Du musst die Bildnummer einfügen:

    Code
    document.getElementById("vorschau").src = "bilder/" + bildnummer + ".jpg";


    und hier:

    Code
    onclick="var bildnummer = 4; function thumb();">


    "function" benötigst Du, um eine Funktion zu defieren, wenn du sie aufrufen willst, ist es fehl am Platze.

    Davon abgesehen geht es auch um einiges einfacher:
    Wenn Du den Parameter bildnummer definierst, solltest du ihn auch verwenden und die Variable weglassen:


    Dann kannst die Funktion gleich mit der richtigen Bildnummer aufrufen:

    HTML
    <img src="bilder/thumbnails/1-thumb.jpg" onclick="thumb(1);" width="320" height="240" alt="Bild1" title="Bild1">


    Und die a-href-Tags sind IMO überflüssig:

    HTML
    <div id="thumbnail">
    	<img src="bilder/thumbnails/1-thumb.jpg" onclick="thumb(1);" width="320" height="240" alt="Bild1" title="Bild1">
    	<img src="bilder/thumbnails/2-thumb.jpg" onclick="thumb(2);" width="320" height="240" alt="Bild1" title="Bild1">
    	<img src="bilder/thumbnails/3-thumb.jpg" onclick="thumb(3);" width="320" height="240" alt="Bild1" title="Bild1">
    	<img src="bilder/thumbnails/4-thumb.jpg" onclick="thumb(4);" width="320" height="240" alt="Bild1" title="Bild1">
    </div>

    Wenn ich das richtig sehe, brauchst Du mit der Verkettung durch elseif nur weiterzumachen:

    Ich habe früher Scriptly benutzt und bin, weil es nicht mehr weiter entwickelt wird, nach längerer Suche auf MS Webmatrix umgestiegen.
    Was mir gefällt:

    • Syntax-Highlightung und Code-Vervollständigung
    • Zeigt Syntax- und Validierungsfehler bei HTML, JS und PHP an
    • Webserver integriert
    • kostenlos

    Was mir nicht gefällt, aber nicht schwer wiegt:

    • Braucht etwas lange zum Starten
    • Formatierung für JS funktioniert nicht richtig
    • Kein PHP-Debugger

    PHP-Designer 8 hört sich auch interessant an, ist nicht teuer und hat eine PHP-Debugger.

    Das macht man i. allg. so (ich gehe mal davon aus, dass Du weißt, wie Du die Positionen berechnen kannst):

    JavaScript
    $(document).ready(function() {
    	var wiwi = $(window).width();
    	// hier die Positionen der Elemente berechnen
    	var ele1left =
    	var ele1top =
    	("#ele1id").css({left: ele1left + "px", top: el1top + "px"});
    	("#ele2id").css({left: ele2left + "px", top: el2top + "px"});
    	// usw.
    });


    und den Elementen die entspr. ID geben:

    HTML
    <img id="ele1id" src=" ... ">
    <img id="ele2id" src=" ... ">

    Ich habe mehrere DE-Mail-Konten und bin sehr ernüchtert, weil offenbar die breite Akzeptanz fehlt. In meiner Kommunikation beim Onlineshopping etc. ist es mir erst einmal passiert, dass ein Partner eine Korrespondenz per DE-Mail angeboten hat. Im Impressum und auf Briefköpfen findet man fast nie eine DE-Mail-Adresse.

    Dieses Skript müsste dein Problem lösen:

    Es setzt die Klasse "current" bei dem betr. a-Tag. Daraus kannst Du dann das Hervorheben ableiten.

    Versuch mal, das span absolut zu positionieren:

    CSS
    .tooltip { position:relative; z-index:20; }.tooltip span { display:none; position:absolute; left:0px; top:10px;}.tooltip:hover {z-index:21;}.tooltip:hover span {	 display:block;}


    Und wenn das nicht funktioniert, poste mal die URL deiner ganzen Seite. Ich überblicke nicht, was das area-Tag und das Bild, das damit zusammen hängt, für eine Auswirkung hat.

    "Ich frage nur mal nach, gibt es noch eine andere Möglichkeit oder ist das die gebräuchliche Methode?
    Es sind hier javascripte einzubinden und von javascript habe ich noch keine ahnung.
    da bin ich etwas zurückhaltend."

    Ja, Lightbox ist eine gebräuchliche Methode und ja, es geht auch anders, indem man es selbst in Javascript programmiert, wie es hier schon beschrieben wurde.
    Wenn Du von Javascript "noch keine Ahnung" hast, ist es mit Sicherheit einfacher, ein fertiges Lightbox-Plugin zu verwenden, als es selber zu programmieren. Bei diesen Plugins gibt es i. allg. eine Anleitung, die leicht umzusetzen sein sollte.

    Zitat: " wieso geht denn die eine gallerie nur einmal pro seite?"
    Der Grund ist, dass dieser Code globale Variablen verwendet und sich pauschal auf alle img-Tags bezieht, ein häufiges Problem bei älteren Skripts:

    Code
    var images = document.getElementById("divId");
    document.getElementsByTagName("img");

    Eine schlechte Lösung wäre, die Variablen zu vervielfachen und ihnen und den IDs eindeutige Namen zu geben:

    Code
    // 1st gallery
    var images1 = document.getElementById("divId1");
    // 2nd gallery
    var images2 = document.getElementById("divId2");


    Um die zugehörigen Bilder zu ermitteln, müsste man dann die Kind-Elemente der Container ermitteln. Wie gesagt, eine sehr schlechte Lösung.

    Eine bessere Lösung besteht darin, alle Variablen in einer Funktion zu kapseln und alle HTML-Elemente in einem Container unterzubringen und dessen Selektor an die Funktion zu übergeben:

    Code
    function mygallery(sel) {
    	var bigimg = <img class="bigimg">;
    	$(sel + " img").on("click", function() {
        	$(sel + ".bigimg").attr("src", $(this).attr("src"));
    	});
    	$(sel).prepend(bigimg);
    }

    Dann für die verschiedenen Galerien diese Funktion mit dem betr. Selektor aufrufen:

    Code
    mygallery("#gallery1");
    mygallery("#gallery2");

    Ungetestet, ich wollte nur mal die ungefähre Vorgehensweise skizzieren.
    BTW: Es gibt viele gute, fertige Galerie-Skripts, so dass es sich nicht lohnt, so etwas selber zu schreiben, es sei denn, man nimmt es als Übungsaufgabe, um Javascript/jQuery zu lernen. Z. B. dieses:
    http://galleria.io/