Hi,
ich stehe auf dem Schlauch bei einer winzigen Sache…
Ich mußte bisher in einer sehr kurzen Ausgabezeile (Überschrift einer schmalen Liste) den Wert dynamisch ändern in Abhängigkeit davon, auf welches Listenelement geklickt wurde.
War funktionierend realisiert mit:
echo "<span style=\"color: #FFFFFF; font-size: 10px;\" id=\"aktDir\">...</span>\n";
...und später dem Scriptbefehl:
echo " document.getElementById(\"aktDir\").firstChild.nodeValue = \"".$dirtext." (".$numfiles.")\"\n";
Leider reicht das jetzt nicht mehr, ich muß jetzt hinten an diesen kurzen String (aufgebaut aus $dirtext und $numfiles) noch einen Link hängen, bei dem ich sowohl Text, als auch Ziel dynamisch setzen muß.
Habe ich auf alle möglichen Arten versucht, zum Schluß jetzt mit:
echo "<span style=\"color: #FFFFFF; font-size: 10px;\"><span id=\"aktDir\">...</span><a id=\"aktDirRef\" href=\"\"></a></span>\n";
...und den beiden zusätzlichen Scriptbefehlen:
echo " document.getElementById(\"aktDirRef\").firstChild.nodeValue = \"".$infolink."\"\n";
echo " document.getElementById(\"aktDirRef\").firstChild.setAttribute("href", = \"".$reflink."\"\n";
(habe es zum Schluß mit einen zweiten span-Tag probiert, damit die beiden relevanten Tags nicht mehr verschachtelt sind)
Aber bei allen meinen Versuchen das gleiche Ergebnis:
Schon wenn ich die erste dieser beiden Scriptzeilen aktiv lasse, habe ich einen Fehler, die zweite habe ich bislang noch permanent auskommentiert (in Wahrheit sind es die zweite und dritte Zeile, der Übersichtlichkeit halber habe ich die nach wie vor vorhandene Originalzeile siehe erster Code unten nicht nochmal eingefügt).
Da diese neue Zeile und die Originalzeile 100% identisch aufgebaut sind, spreche ich wohl den a-Tag falsch an…?
Leider habe ich den Auftritt zur Zeit nicht auf dem Entwicklungsserver eingerichtet, darum muß ich die Seiten ohne Fehlerausgabe life auf dem echten Webserver “testen” Angesichts dieser doch ziemlich lächerlichen Anpassung hatte ich mich das bedenkenlos “getraut”…
Hi & danke,
was heißt “vollkommen” leer?
Ich habe extra ein href="" mit reingenommen, um es vorzubesetzen.
Ja, innerHTML, früher habe ich damit rumgebastelt, aber das soll ja wacklig sein von Standard/Unterstützung und bei den ganzen Browsern für Mobil-Betriebssysteme heute, da scheue ich mich, solche Sachen noch zu verwenden…
Ja, sorry, hatte inzwischen selbst kapiert, was Du meinst, es mit einem vorbesetzt und dann klappte die Zeile.
Hatte mich hier aber nicht gemeldet, weil die letzte Zeile immer noch nicht akzeptiert wurde (auch nach Löschen des Gleichheitszeichens, das mir da beim Kopieren reingeraten war). Da habe ich rumgetestet.
Mit innerHTML kommt man auch (schreibend) an den Wert für href ran? Schau ich mal, danke.
Nein, nur an den Element-Inhalt, nicht an Attribute. Du müsstest also innerHTML des Elternelementes neu setzen, mit den vollständigen Tags inklusive der Attribute (‘bar’) für das Kindelement, das du einfügen willst.
Und deine „letzte Zeile“ hat vorher nicht funktioniert, weil das a-Element kein firstChild hatte. Und selbst wenn du jetzt Inhalt in das a-Element eingefügt hast, bewirkt sie natürlich immer noch nichts – weil du eigentlich das href-Attribute des a-Elements setzen willst, es stattdessen aber für das erste Kindelement setzt … und span kann mit href wenig anfangen.
(Und da braucht’s kein setAttribute für, ein simples [referenz-auf-das-a-element].href = “foo” tut’s auch.)
also danke, habe es gestern umgesetzt und funktioniert alles, so sieht es jetzt aus:
echo "<span style=\"color: #FFFFFF; font-size: 10px;\"><span id=\"aktDir\">...</span> <a name=\"aktDirRef\" target=\"pg_photos\" href=\"\"> </a></span>\n";
...und später den Scriptbefehlen:
echo " document.getElementById(\"aktDir\").firstChild.nodeValue = \"".$dirtext." (".$numfiles.")\"\n";
echo " document.getElementsByName(\"aktDirRef\")[0].firstChild.nodeValue = \"".$infolink."\"\n";
echo " document.getElementsByName(\"aktDirRef\")[0].href=\"".$reflink."\"\n";
Etwas chaotisch:
Beim ersten habe ich es bei “id” gelassen (never touch a running system…), beim zweiten habe ich die name-Eigenschaft verwendet. Habe auch beim zweiten für den Wert noch die Node-Variante benutzt, da sie funktioniert hat. Nur für das Linkziel habe ich die Methode geändert.
Und wegen zweimal node ist mir wieder nix besseres eingefallen als den ersten span zu zerlegen, damit die beiden Elemente (ein span und ein a) auf einer Ebene liegen und nicht der a-Tag verschachtelt in dem span-Tag liegt, der über seine id angesprochen wird (verschachtelt hat der Zugriff auf den a-Tag nicht funktioniert).