Inhalt eines Textblocks ändern
jaeger4x
- javascript
Hallo allerseits,
vorweg muss ich gestehen, dass ich nicht sehr bewandert bin was javascript angeht...
(Ich kann nur vorhandene Skript ein bischen umbauen...)
Mein Problem:
Ich möchte über ein Javascript den Inhalt eines Textblocks ändern.
definiert habe ich den Block jetzt erst mal mit
<p id="beschreibung">text</p>
(könnte aber auch anders definiert werden...)
dem javascript möchte ich nun die id und den neuen Text übergeben.
mit ..
document.getElementById(beschreibung).innerHtml = neuertext;
oder
document.getElementById(beschreibung).src = neuertext;
geht es definitiv nicht...
Welche Attribute kann ich den beim <p> überhaupt ansprechen und ändern?
Ziel soll sein, die Anzeige des Textes ohne neues Laden der Seite zu ändern.
Habe ich da überhaupt den korrekten Ansatz oder bin ich auf dem Holzweg?
leider habe ich trotz intensiver Suche die Lösung für mein Problem noch nicht gefunden.
Hoffe, ihr könnt mir weiterhelfen...
Danke
Axel
Hallo jaeger4x,
document.getElementById(beschreibung).innerHtml = neuertext;
Wenn die Variable beschreibung
und das HTML-Element mit der übergebenen ID existiert, sollte es so funktionieren.
Mit freundlichem Gruß
Micha
Hallo Micha,
erstmal danke für die Antwort...
jetzt hier etwas mehr Info :
hier ein Auszug aus meinem PHP-Skript, das die Source schreibt...:
print "<div style=\"position:fixed; top:{$oben}px; left:{$links}px; max-width:{$BILD_BREIT}px; max-height:{$hoehe}px; ";
print "background-image: url('$startimage');";
print "background-repeat:no-repeat;\" ";
print "id=\"blenddiv\">\n";
print "<img src=\"$startimage\" style=\"-moz-opacity: 0; -khtml-opacity: 0; opacity: 0;\"";
print " id=\"blendimage\" alt=\"\">\n";
print "<p id=\"beschreibung\">$text</p>\n";
print "</div>\n";
an anderer Stelle rufe ich dann beim anklicken eines Bildes ein javascript auf, dem (unter anderem) "beschreibung" und der "neue Text" als Parameter übergeben wird.
print "<a href=\"javascript:blendimage('blenddiv','blendimage',";
print "'$fullname',500,'beschreibung','$text')\">\n";
im Skript selbst benutze ich dann die beiden Parameter...
Das original-Skript habe ich von brainerror.net heruntergeladen um einen sanften Übergang zwischen zwei Bilder zu erzeugen...
Das Überblenden der Bilder funktioniert auch. Jetzt hätte ich halt noch gerne die passende Bildunterschrift...
function blendimage(divid, imageid, imagefile, millisec, textid, text) {
var speed = Math.round(millisec / 100);
var timer = 0;
//set the current image as background
document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
//make image transparent
changeOpac(0, imageid);
//make new image
document.getElementById(imageid).src = imagefile;
document.getElementById(textid).innerHtml = text;
//fade in image
for(i = 0; i <= 100; i++) {
setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
timer++;
}
}
Wenn du sagst, das muss gehen - wo ist dann mein Fehler?
Wie gesagt es geht nicht...
Gruß
Axel
Mahlzeit jaeger4x,
hier ein Auszug aus meinem PHP-Skript, das die Source schreibt...:
Bei serverseitigen Problemen poste bitte serverseitigen Code (also das, was auf dem Server ausgeführt wird).
Bei clientseitigen Problemen poste bitte clientseitigen Code (also das, was der Server erzeugt und an den Client ausliefert und was dann dort ausgeführt wird).
Es handelt sich Deiner Beschreibung zufolge um ein clientseitiges Problem ... was soll dann also serverseitiger Code bringen - außer Verwirrung?
an anderer Stelle rufe ich dann beim anklicken eines Bildes ein javascript auf, dem (unter anderem) "beschreibung" und der "neue Text" als Parameter übergeben wird.
print "<a href="javascript:blendimage('blenddiv','blendimage',";
print "'$fullname',500,'beschreibung','$text')">\n";
Dort werden der Funktion blendimage() zwei Strings übergeben.
> function blendimage(divid, imageid, imagefile, millisec, textid, text) {
In Deiner erweiterten Funktion erwartet diese nicht nur zwei, sondern 6 Parameter. Übergibst Du dort die richtigen Werte? Überprüfe dies (z.B. ganz einfach, indem Du sie Dir per <http://de.selfhtml.org/javascript/objekte/window.htm#alert@title=alert()> ausgeben lässt)!
> document.getElementById(textid).innerHtml = text;
Bedenke, dass Groß- und Kleinschreibung von Variablen, Objekten und Funktionen in Javascript sehr wohl eine Rolle spielt: die Methode heißt <http://de.selfhtml.org/javascript/objekte/all.htm#inner_html@title=innerHTML>.
> Wenn du sagst, das muss gehen - wo ist dann mein Fehler?
Unter anderem daran, dass Du keine hilfreiche Problembeschreibung lieferst, sondern stattdessen Deine Leser zum Raten und Glaskugel-putzen nötigst.
> Wie gesagt es geht nicht...
"Geht nicht" [geht nicht](http://forum.de.selfhtml.org/hilfe/charta.htm#tipps-fuer-fragende).
MfG,
EKKi
--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
Hi an alle...
erst mal Danke an alle, das Problem ist gelöst. wenn man innerHTML anstatt innerHtml schreibt funktioniert das auch wie es soll.
Nun zu meiner Entschuldigung :
in meinem ersten Posting hatte ich ja meines Erachtens die Komponenten aufgelistet, in denen der Fehler sein müsste (und dann ja auch war...)
Als Antwort habe ich erhalten : müsste gehen... soweit so gut - den Schreibfehler habe ich ja auch tagelang übersehen...
Wenn ich nun aber nicht weiss, wo der Fehler liegt (Serverseitig oder Clientseitig - im Programmcode vielleicht ein Hochkomma zu wenig oder im erzeugten HTML-Code ein Hochkomma zu viel ) Welche Infos soll ich euch zukommen lassen?
Deshalb habe ich dann halt ein bischen zu viel gepostet... ( so wie jetzt wahrscheinlich auch wieder...)
Also : Tut mir leid, wenn ich euch verwirrt habe... und DANKE für die Hilfe...
Hallo jaeger4x,
Welche Infos soll ich euch zukommen lassen?
Na bei JavaScript Fehlern die, die die Fehler-Konsole liefert. Solltest Du irgendwo etwas vergessen haben (Anführungszeichen etc.) wird diese Dir das auch (mehr oder weniger verständlich) sagen.
Mit freundlichem Gruß
Micha
Mahlzeit jaeger4x,
erst mal Danke an alle, das Problem ist gelöst. wenn man innerHTML anstatt innerHtml schreibt funktioniert das auch wie es soll.
Natürlich. Ein Blick in die entsprechende Dokumentation hätte das auch klären können ... :-)
Wenn ich nun aber nicht weiss, wo der Fehler liegt (Serverseitig oder Clientseitig - im Programmcode vielleicht ein Hochkomma zu wenig oder im erzeugten HTML-Code ein Hochkomma zu viel ) Welche Infos soll ich euch zukommen lassen?
Immer den relevanten. Wenn es ein Javascript-Problem ist, dann IMMER und NUR Javascript- und ggf. den dazu gehörenden HTML-Code ... woanders kann der Fehler schließlich nicht auftreten. Wenn sich dann bei der Fehleranalyse (die man sinnvollerweise unter Zuhilfenahme einer geeigneten Fehlerkonsole eines geeigneten Browsers durchführt - diese hätte Dich sicherlich auch auf die nicht vorhandene Eigenschaft "innerHtml" hingewiesen) herausstellt, dass irgendeine Syntax falsch ist und dass dieser Teil des Codes dynamisch auf dem Server z.B. durch PHP erzeugt wird ... dann und NUR dann ist PHP-Code erforderlich.
Also : Tut mir leid, wenn ich euch verwirrt habe... und DANKE für die Hilfe...
Kein Problem - Du musst Dir halt nur selbst immer vor Augen halten, dass verwirrte Leser meistens keine geeigneten Helfer sind. Insofern sollte es in Deinem eigenen Interesse liegen, dein Problem klar zu beschreiben. :-)
MfG,
EKKi
Hi,
[...] Fehleranalyse (die man sinnvollerweise unter Zuhilfenahme einer geeigneten Fehlerkonsole eines geeigneten Browsers durchführt - diese hätte Dich sicherlich auch auf die nicht vorhandene Eigenschaft "innerHtml" hingewiesen)
Nein, in so einem Falle eben nicht. Es ist ein *schreibender* Zugriff auf eine nicht existente Eigenschaft - also legt JavaScript einfach ein solche am Objekt an, und packt den Wert hinein.
Wäre es hingegen ein lesender Zugriff gewesen (und vorher kein schreibender passiert), dann hätte die Fehlerkonsole angemerkt, dass es diese Eigenschaft nicht gibt.
Davon abgesehen ist dein Hinweis darauf, wie wichtig die Fehlerkonsole ist, natülich vollkommen korrekt. Nur hier *kann* sie halt keinen Fehler melden, weil aus Sicht von JavaScript gar keiner vorliegt.
MfG ChrisB
Hi,
Wäre es hingegen ein lesender Zugriff gewesen (und vorher kein schreibender passiert), dann hätte die Fehlerkonsole angemerkt, dass es diese Eigenschaft nicht gibt.
Auch da muss ich mich jetzt selber korrigieren - das liefert natürlich zunächst mal auch nur ein "undefined", und stellt keinen Fehler dar.
MfG ChrisB
Hi,
»»
document.getElementById(beschreibung).innerHtml = neuertext;
Wenn die Variablebeschreibung
und das HTML-Element mit der übergebenen ID existiert, sollte es so funktionieren.
Nein, nicht ganz. Es heißt: innerHTML
MfG!
Hallo Christian S.,
Nein, nicht ganz. Es heißt: innerHTML
Danke, hatte ich übersehen!
Mit freundlichem Gruß
Micha
<p id="beschreibung">text</p>
document.getElementById(beschreibung).innerHtml = neuertext;
oder
document.getElementById(beschreibung).src = neuertext;
geht es definitiv nicht...
Weil du nicht die ID "beschreibung" abrufst, sondern eine ID die in einer Variable beschreibung gespeichert ist.
Eine solche Variable existiert aber nicht.
Sehr wahrscheinlich willst du mit den Zeichen "" etwas sinnvolles anfangen.
mfg Beat