Beiträge von Sempervivum

    Meistens wird so etwas mit Javascript gemacht, aber es geht genau so gut mit PHP. Ich würde folgende Vorgehensweise empfehlen:
    Lege ein Array an mit den Parametern coords und Adresse der Seite:

    PHP
    $params = array(
    	array("coords" => "42,248,44,246,14,244,13,271,68,293,83,242,55,228", "href" => "tag1.html"), // 1. Dezember, Index = 0
    	array("coords" => "42,248,44,246,14,244,13,271,68,293,83,242,55,228", "href" => "tag2.html"), // 2. Dezember, Index = 1
    	// usw. bis:
    	array("coords" => "42,248,44,246,14,244,13,271,68,293,83,242,55,228", "href" => "tag24.html") // 1. Dezember, Index = 23
    );


    Dann legst Du die Imagemap mit PHP an und verwendest das richtige Linkziel für den betr. Tag:

    PHP
    for ($i = 0; $i < count($params); $i++) {
    	$akttag = $i + 1;
    	if ($akttag <= $heute) {
        	$href = $params[i]["href"];
    	} else {
        	$href = "zufrueh.html";
    	}
    	echo '<area shape="poly" coords="' . $params[i]["coords"] . '" href="' . $href . '">' . "\n";
    }

    Wenn Du das "Zu früh!" lieber als Popup haben möchtest, müsste man dies mit etwas Javascript ergänzen.

    Ein Nachteil bei der Lösung mit dem iFrame ist, dass Du die Abmessungen angeben musst und sich diese nicht automatisch an den Inhalt anpassen, es sei denn, man programmiert dies umständlich mit Javascript. Das kannst Du vermeiden, wenn Du die Tabelle mit PHP-Include einbindest, dann wird sie immer so dargestellt, wie es die Inhalte erfordern. Außerdem hat das Inkludieren den Vorteil, dass Du in einer getrennten Datei die nackte Tabelle hast, ohne HTML-Grundgerüst, wie Du es, glaube ich, haben wolltest.

    document.write() ist mir zwar nicht besonders sympatisch, aber lassen wir das mal außen vor.
    Das Problem liegt hier:

    JavaScript
    document.write("<a href='#' onclick='thumb(i);'> <img src='bilder/thumbnails/" + i + "-thumb.jpg' width='320' height='240' alt='Bild1' title='Bild1'></a>");


    Du musst dafür sorgen, dass für i die Variable eingesetzt wird, so wie Du es beim img-Tag schon tust:

    JavaScript
    document.write("<a href='#' onclick='thumb(" + i + ");'> <img src='bilder/thumbnails/" + i + "-thumb.jpg' width='320' height='240' alt='Bild1' title='Bild1'></a>");

    Auch in diesem Fall hilft der Debugger weiter: Das Problem liegt nicht beim Ajax, sondern beim Zugriff auf das XML. Davon habe ich zwar keine Ahnung, aber offenbar funktioniert dein Verfahren beim IE nicht. Habe dazu dieses gefunden:
    http://stackoverflow.com/questions/8417…parse-xml-in-ie
    und getestet und dieses jQuery funktioniert im IE:

    JavaScript
    titel = $($(antwort).find('bildtitel')[x]).text();


    Vergiss nicht, jQuery einzubinden, wenn Du es verwendest.

    "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=" ... ">