Timm Riesenberg: Funktion innerHTML mit Parametern aufrufen

Hallo Leute

ich habe eine dringende Frage.
Ich habe folgendes Skript aus SelfHTML.

<html><head><title>Test</title>
 <script language="JavaScript">
   var Neu = "neuer <b>fetter</b> Text";
   function Aendern()
      { document.all.meinAbsatz.innerHTML = Neu; }
 </script>
 </head><body>
 <p id="meinAbsatz">Text</p>
 <a href="javascript:Aendern()">Anderer Text</a>
 </body></html>

Dieses funktioniert wunderbar so wie es ist.
Ich habe nun allerdings 50 mal "meinAbsatz" und möchte dynamisch, mittels einer Variablen, über eine Funktion meinAbsatz verändern.

Ich habe folgendes versucht:

function Aendern(i)
{ document.all.i.innerHTML = Neu; }
</script>
</head><body>
<p id="id1">Text1</p>
<p id="id2">Text2</p>
<a href="javascript:Aendern('id1')">Anderer Text1</a>
<a href="javascript:Aendern('id2')">Anderer Text2</a>

Das funktioniert aber nicht, da document.all.i kein Objekt ist.

Vielen Dank für Eure Hilfe.

Ciao Timm

  1. Hallo!

    Ich habe folgendes versucht:

    function Aendern(i)
    { document.all.i.innerHTML = Neu; }
    </script>
    </head><body>
    <p id="id1">Text1</p>
    <p id="id2">Text2</p>
    <a href="javascript:Aendern('id1')">Anderer Text1</a>
    <a href="javascript:Aendern('id2')">Anderer Text2</a>

    Das funktioniert aber nicht, da document.all.i kein Objekt ist.

    Meines Wissens kannst du die Variable (i) nicht so einfach da reinschreiben, sondern mußt die Sache mittels eval() angehen:

    eval("document.all."+i+".innerHTML = Neu;");

    Ich hoffe dir geholfen zu haben :-)

    Schöne Grüße
    Dominic

    1. Danke Dominik

      Dein Tip mit eval() war richtig.
      Ich hab dann noch paar andere Fehler gehabt aber der folgende Text läuft.

      <head><title>Test</title>
      <script language="JavaScript">
      function Aendern(i){
       var Neu = "neuer <b>fetter</b> Text";
       eval("document.all.meinAbsatz"+i+".innerHTML = '" + Neu + "'");
      }
      </script>
      </head><body>
      <p id="meinAbsatz1">Text1</p>
      <p id="meinAbsatz2">Text2</p>
      <a href="javascript:Aendern('1')">Anderer Text1</a><br>
      <a href="javascript:Aendern('2')">Anderer Text2</a><br>
      </body></html>

      Gracias und noch einen schönen Tag

      Timm

  2. Hallo Leute

    hallo timm,

    ich habe eine dringende Frage.
    Ich habe folgendes Skript aus SelfHTML.

    <html><head><title>Test</title>
    <script language="JavaScript">
       var Neu = "neuer <b>fetter</b> Text";
       function Aendern()
          { document.all.meinAbsatz.innerHTML = Neu; }
    </script>
    </head><body>
    <p id="meinAbsatz">Text</p>
    <a href="javascript:Aendern()">Anderer Text</a>
    </body></html>

    Dieses funktioniert wunderbar so wie es ist.
    Ich habe nun allerdings 50 mal "meinAbsatz" und möchte dynamisch, mittels einer Variablen, über eine Funktion meinAbsatz verändern.

    Ich habe folgendes versucht:

    function Aendern(i)
    { document.all.i.innerHTML = Neu; }

    vergiss nicht, die variable in einen string zu konvertieren,
    z.bsp. so:
    function Aendern(i) {
       document.all[""+i].innerHTML = Neu
    }

    </script>
    </head><body>
    <p id="id1">Text1</p>
    <p id="id2">Text2</p>
    <a href="javascript:Aendern('id1')">Anderer Text1</a>
    <a href="javascript:Aendern('id2')">Anderer Text2</a>

    Das funktioniert aber nicht, da document.all.i kein Objekt ist.

    Vielen Dank für Eure Hilfe.

    Ciao Timm

    bye,
    manyak online

    1. http://learn.to/quote

      Ein Geschäftsmann reißt in einer japanischen Disco eine hübsche Japanerin auf. Später in seinem Hotel, sie sind gerade "voll dabei", schreit sie immer "hai to, hai to". Er denkt sich, na ja, die ist aber gut drauf und lobt mich ganz prima...
      Am nächsten Tag, spielt er mit seinem japanischen Geschäftspartner Golf und dem Japaner gelingt ein ausgezeichneter Schlag. Um den Japaner zu beeindrucken, versucht der Geschäftsmann sein frisch erworbenes Japanisch an den Mann zu bringen und sagt: "Hai to!"
      Darauf der Japaner: "Was heißt hier falsches Loch?!?"

  3. Seasn !

    Ich habe nun allerdings 50 mal "meinAbsatz" und möchte dynamisch, mittels einer Variablen, über eine Funktion meinAbsatz verändern.

    Wenn Du alle 50 aufeinmal ändern willst, nimm eine Schleife:

    function aendern(max)
    { for(i=1; i<=max; i++)
       document.all['id'+i].innerHTML = Neu; }

    Ansonsten, wenn's einzeln sein soll:

    function Aendern(i)
    { document.all.i.innerHTML = Neu; }

    Falsch. Da sucht der Interpreter nach einem Div mit der ID "i". Gibts aber net. Was Du meinst ist

    document.all[i].innerHTML = Neu;

    Das funktioniert aber nicht, da document.all.i kein Objekt ist.

    s.o.

    Ciao,

    Harry