Matthias: .InnerText auswerten

Hallo zusammen,

wenn ich in einem JS-Script folgendes mache:
  <script>
    function schreiben(e, von_wo) {
      ...
      str = "einblenden";
      document.all.ol.innerText = str;
      alert(document.all.ol.innerText == "einblenden");
      ...
    }
  </script>

bekomme ich bei
  onClick="schreiben(event, 'ol')"><div id="ol"></div>
im Fenster "True" zurück.

Wenn ich allerdings den den Verweis auf das div-Element in der schreiben-Funktion weiter unten dynamisch zusammenbaue

function schreiben(e, von_wo) {
  ...
    tmp = "";
    tmp += "document.all.";
    tmp += von_wo;
    tmp += ".innerText";

txt += eval(tmp == 'einblenden');
    // oder auch
    txt += eval(tmp == "einblenden");
  ...
  }

wird über die Variable "txt" "False" zurückgegeben.

Woran liegt das?

Danke für Hinweise,

Matthias

  1. hi!

    du baust deinen abfragestring in "tmp" mit strings zusammen,
    javascript interpretiert das dann nciht mehr als objekt sondern nur als string und vergleichet dementsprechend den string "document.all."+vonwo+"".innerText" mit "einblenden", was natürlich false zurückliefert...

    gruß
    cheops

  2. Hallo

    txt += eval(tmp == 'einblenden');
        // oder auch
        txt += eval(tmp == "einblenden");
      ...

    wird über die Variable "txt" "False" zurückgegeben.

    Und das stimmt ja auch. Du vergleichst hier den Stringinhalt von tmp mit "einblenden" und da diese nicht identisch sind wird FALSE ausgegeben...
    Was du tun willst ist den Inhalt des durch tmp Referenzierten Elements zu vergleichen.
    Wie das konkret geht weiss ich nu allerdings aus dem Stegreif grad nicht, aber vielleicht reicht das dir ja schon, um den Fehler zu beheben.

    Grüsse, eeye

    --
    [ ] <- Nail here for new Monitor.
    1. Hallo

      Wie das konkret geht weiss ich nu allerdings aus dem Stegreif grad nicht, aber vielleicht reicht das dir ja schon, um den Fehler zu beheben.

      Kuck mal hier: http://selfhtml.teamone.de/javascript/objekte/document.htm#get_elements_by_name
      damit sollte das gehen...

      Grüsse, eeye

      --
      [ ] <- Nail here for new Monitor.
  3. document.all.ol.innerText = str;
          alert(document.all.ol.innerText == "einblenden");
          ...

    Das versteht sowieso kein guter Browser.

    MfG
    Avalon

  4. Hallo,

    Danke! OK, das habe ich verstanden, dass ich da zwei Stings miteinander vergleiche, wo "False" rauskommen muss.

    Wie kann ich aber mit einer Funktion dynamisch auf die innerText-Eigenschaft von verschiedenen div-Elementen zugreifen?

    Danke nochmals für weitere Hinweise,

    Matthias

    1. Hello again

      Wie kann ich aber mit einer Funktion dynamisch auf die innerText-Eigenschaft von verschiedenen div-Elementen zugreifen?

      Hatte ich das nicht schon in [pref:t=72201&m=415809] gepostet?

      Also:

      function schreiben(e, von_wo) {

      txt += eval(document.getElementsByName(von_wo).innertext == "einblenden");

      }

      sollte gehen.. is aber untested...

      Grüsse, eeye

      --
      [ ] <- Nail here for new Monitor.
      1. Auch noch mal hallo,

        hab' Deinen Ansatz natürlich ausprobiert, der geht aber leider auch nicht.

        Wenn man allerdings auch noch die kleinen Schraibfeeler eliminiert ... :-(

        Danke,

        Matthias :-)

        1. Hi

          hab' Deinen Ansatz natürlich ausprobiert, der geht aber leider auch nicht.

          Warum?

          Wenn man allerdings auch noch die kleinen Schraibfeeler eliminiert ...

          Du meinst du hast die Funktion getElementsByName durch getElementsByID ersetzt bzw. deinem Element ein "name" Attribut statt einer ID gegeben und jetzt tuts?

          Danke,

          Bitte :-)

          eeye

          --
          [ ] <- Nail here for new Monitor.
          1. Hey,

            nein:
            »»getElement>s<ByID
                         ^
                         |
                         ----> bei Dir ist das >s< zuviel !!! :-)

            Matthias

            1. Hallo

              nein:
              »»getElement>s<ByID
                           ^
                           |
                           ----> bei Dir ist das >s< zuviel !!! :-)

              Korrekt. Echter Schreibfehler meinerseits.

              Aber auch ohne "s" würde mein Beispiel mit deinem geposteten Code nicht funktionieren...
              Wenn es also trotzdem tut, hast du irgendwas richtig gemacht und hoffentlich auch verstanden was... dann hätte allerdings mein erster link eigentlich gereicht ;-)

              Grüsse eeye

              --
              [ ] <- Nail here for new Monitor.
              1. hey,

                Wenn es also trotzdem tut, hast du irgendwas richtig gemacht und hoffentlich auch verstanden was... dann hätte allerdings mein erster link eigentlich gereicht ;-)

                alles bestens, Danke! war an einer anderen stelle auch noch ein schreibfehler!

                matthias