El Supremo: Dynamisch geschriebene HTML Elemente "ausführen"

Hallo,

die frage ist für euch wahrscheinlich recht einfach zu beantworten, aber ich sitze nun schon einige zeit daran und komme einfach nicht zum gewünschten ergebnis.
ich möchte ergebnisse einer rechnung per javascript in einen absatz schreiben lassen. dabei soll das ergebnis aus mehreren zeilen bestehen, welche ich mit <br> umbrechen möchte. außerdem sollen auch noch andere HTML elemente (z.b. <sup>) in den absatz geschrieben werden. der text samt HTML elementen, der in den absatz geschrieben werden soll, ist in der variablen "text" gespeichert:

var text = "x und y Koordinaten für die Gleichung y<sup>2</sup> = " + m + " * x + " + b + " lauten: <br> " + ausgabe;

der inhalt dieser variablen soll in einen absatz mit der id "ausgabefeld" geschrieben werden:

document.getElementById('ausgabefeld').firstChild.nodeValue = text;

leider werden die HTML tags dann als text angezeigt und nicht angewandt. anstatt eines zeilenumbruchs steht also nur <br> da.

notiere ich anstatt <sup>2</sup> folgendes

var sup = document.createElement('sup');
   var hoch2 = document.createTextNode('2');
   var exponent = sup.appendChild(hoch2);
   var text = "x und y Koordinaten für die Gleichung y" + exponent + " = " + m + " * x + " + b + " lauten: <br> " + ausgabe;

so erhalte ich statt "²" nur [object].

kann mir jemand dabei helfen, die elemente dazu zu bringen, ihre arbeit zu tun?

--
Ich weiß, dass ich nichts weiß. (Sokrates)
  1. n'abend,

    document.getElementById('ausgabefeld').firstChild.nodeValue = text;

    wenn du HTML schreiben möchtest, wärst du mit .innerHTML vielleicht besser aufgehoben? document.getElementById('ausgabefeld').innerHTML = 'funktioniert<sup>23</sup>';

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. vielen dank für den tipp!

      aber sollte man statt dem all objekt nicht das node objekt verwenden?
      im prinzip ist es in dem fall zwar egal, da ich das script nur für private zwecke verwenden möchte, aber ich mich würde auch eine "saubere" lösung interessieren.

      --
      Ich weiß, dass ich nichts weiß. (Sokrates)
      1. vielen dank für den tipp!

        aber sollte man statt dem all objekt nicht das node objekt verwenden?
        im prinzip ist es in dem fall zwar egal, da ich das script nur für private zwecke verwenden möchte, aber ich mich würde auch eine "saubere" lösung interessieren.

        Sauber wäre, wenn du für jedes Element einen Knoten erzeugst und einfügst. Also für HTML Knoten createElement und für Text createTextNode() bzw. .data, aber innerHTML ist auch ok, wenn du die Elemente sowieso nicht weiter verwenden möchtest.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. ok, danke.
          dann löse ich es jetzt erstmal mit innerHTML, probiere aber noch etwas mit createElement und createTextNode herum...

          euch noch einen schönen sonntag abend...

          --
          Ich weiß, dass ich nichts weiß. (Sokrates)
          1. tut mir leid, dass ich schon wieder so blöd frage, aber das node objekt und ich haben irgendwie...beziehungprobleme.
            ich bin mir sicher, alles genau wie hier ( http://de.selfhtml.org/javascript/objekte/document.htm#create_element ) beschrieben gemacht zu haben, aber meine ² sind doch immer nur 2.

            var sup = document.createElement('sup');
               var hoch2 = document.createTextNode('2');
               var exponent = sup.appendChild(hoch2);
               document.getElementById('ausgabefeld').appendChild(exponent);

            kann mich nochmal jemand retten?

            --
            Ich weiß, dass ich nichts weiß. (Sokrates)
            1. tut mir leid, dass ich schon wieder so blöd frage, aber das node objekt und ich haben irgendwie...beziehungprobleme.
              ich bin mir sicher, alles genau wie hier ( http://de.selfhtml.org/javascript/objekte/document.htm#create_element ) beschrieben gemacht zu haben, aber meine ² sind doch immer nur 2.

              var sup = document.createElement('sup');
                 var hoch2 = document.createTextNode('2');
                 var exponent = sup.appendChild(hoch2);
                 document.getElementById('ausgabefeld').appendChild(exponent);

              du willst nicht den Rückgabewert der appenChild() Funktion deinem Dokument hinzufügen, sondern Das Element sup

              Struppi.

              --
              Javascript ist toll (Perl auch!)
              1. du willst nicht den Rückgabewert der appenChild() Funktion deinem Dokument hinzufügen, sondern Das Element sup

                sorry, aber das bedeutet...?

                --
                Ich weiß, dass ich nichts weiß. (Sokrates)
                1. n'abend,

                  sorry, aber das bedeutet...?

                  das bedeutet, dass du in deinem Code einen (nennen wir es mal Denk-)Fehler hast:

                  var sup = document.createElement('sup');  
                  var hoch2 = document.createTextNode('2');  
                  var exponent = sup.appendChild(hoch2);  
                  // statt deinem ausgabefeld sup anzuhängen, hängst du ihm den (miss-)Erfolg der vorigen Zeile an.  
                  document.getElementById('ausgabefeld').appendChild(exponent);
                  

                  Hänge das richtige Objekt an:
                  document.getElementById('ausgabefeld').appendChild(sup);

                  weiterhin schönen abend...

                  --
                  Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                  sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
                  1. weiterhin schönen abend...

                    danke, nach deiner antwort habe ich jetzt wieder eine chancse auf einen solchen. ;)
                    mein (denk-) fehler war, dass ich der meinung war, ich könnte "exponent" stellvertretend für "sup" verwenden...naja, übung macht den meister.

                    schönen abend oder wahlweise eine gute nacht!

                    --
                    Ich weiß, dass ich nichts weiß. (Sokrates)
                    1. so, nachdem ihr mir die letzten male so schnell und gut verständlich helfen konntet, hoffe ich, dass euch die nächste frage nichts ausmacht (warnt mich, bevor ich zu arg nerve ;) ).
                      und zwar werden maskierte sonderzeichen innerhalb eines textnodes nicht dargestellt.
                      wenn ich also per document.createTextNode('&#177;') eine textnode mit dem plusminus zeichen erstelle, wird dieses später nicht angezeigt, sondern nur &#177; . ich bin sicher, die lösung ist einfach...aber ich komme nicht darauf. kann mir bitte nochmals jemand helfen?

                      --
                      Ich weiß, dass ich nichts weiß. (Sokrates)
                      1. hi,

                        wenn ich also per document.createTextNode('&#177;') eine textnode mit dem plusminus zeichen erstelle, wird dieses später nicht angezeigt, sondern nur &#177; .

                        Klar - wieso soll Javascript unterscheiden können, ob du ein ± oder den Text &#177; erstellen wolltest?

                        ich bin sicher, die lösung ist einfach...

                        Wenn du dein Dokument in einer Unicode-Kodierung erstellt hast, wäre document.createTextNode('±') schon alles.

                        Mit String.fromCharCode(177) das ± zu erzeugen, und dann als Argument für createTextNode zu verwenden, wäre eine weitere Möglichkeit, die mir spontan einfällt.

                        gruß,
                        wahsaga

                        --
                        /voodoo.css:
                        #GeorgeWBush { position:absolute; bottom:-6ft; }
                        1. Wenn du dein Dokument in einer Unicode-Kodierung erstellt hast, wäre document.createTextNode('±') schon alles.

                          das ist ja fast zu einfach um wahr zu sein...dankeschön!

                          --
                          Ich weiß, dass ich nichts weiß. (Sokrates)