jaeger4x: Inhalt eines Textblocks ändern

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

  1. 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

    --
    simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris
    1. 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

      1. 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:|
        
        1. 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...

          1. 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

            --
            simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris
          2. 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

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. 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

              --
              Light travels faster than sound - that's why most people appear bright until you hear them speak.
              1. 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

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.
    2. Hi,

      »» document.getElementById(beschreibung).innerHtml = neuertext;
      Wenn die Variable beschreibung und das HTML-Element mit der übergebenen ID existiert, sollte es so funktionieren.

      Nein, nicht ganz. Es heißt: innerHTML

      MfG!

      1. Hallo Christian S.,

        Nein, nicht ganz. Es heißt: innerHTML

        Danke, hatte ich übersehen!

        Mit freundlichem Gruß
        Micha

        --
        simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris
  2. <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

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische