Mika: Zuweisungsoperator +=

Hallo zusammen,

ich habe folgende Funktion:

for(var z = 2; z <= 4; z++)
{
  if(document.getElementById("artnr_"+z).value != "")
  {
    alert("Pos "+z+" gesetzt");
    string_value += "<tr><td>"+z+"</td><td>"+document.getElementById("artnr_"+z).value+"</td></tr>";
  }
  else
  {
    alert("Pos "+z+" nicht gesetzt");
  }
}

Diese Funktion soll nichts anderes tun, als mehrere Tabellenfelder durchzugehen und deren Werte hintereinander in einen String zu speichern. Dies sollte doch mit dem Operator += möglich sein, oder habe ich einen Denkfehler?

auf jeden Fall funktioniert es bei mir leider nicht

kann mir jemand helfen?

Danke im Vorraus

Viele Grüße

Mika

  1. Ich glaube, wenn du sowas "string_value += ..." verwendest, dann muss die Variable zuvor initialisiert werden.

    Schreib mal vor "for(var z = 2; z <= 4; z++)" folgendes ...

    string_value = "";

    Viel Erfolg

    1. Hi dr.colossos,

      vielen Dank jetzt funktionierts!!!

      schon verrückt an welchen kleinigkeiten es manchmal scheitern kann...

      Ich glaube, wenn du sowas "string_value += ..." verwendest, dann muss die Variable zuvor initialisiert werden.

      Schreib mal vor "for(var z = 2; z <= 4; z++)" folgendes ...

      string_value = "";

      Viel Erfolg

      nochmal vielen Dank, du hast mir kostbare Zeit und vor allem Kopfzerbrechen erspart

      Gruß Mika

      1. Gern geschehen.

        Auf jeden Fall Variablen immer deklarieren/definieren/initialiseren. Viele Programmiersprachen (JavaScript, PHP und dutzend anderer) brauchen das nicht und ermitteln den Typ dynamisch, langfristig gibts aber dann irgendwo Probleme, und dann hast erst richtig Sorgen beim Suchen.

        Das deklarieren/definieren/initialiseren braucht zwar mehr Code-Zeilen, und es sieht alles nicht mehr so kompakt aus ... für den Fall stell dir vor du wirst nach Anzahl der Code-Zeilen bezahlt, hehe.

        1. Jo danke für den Tipp.

          ich hab noch ne andere Frage:

          wenn ich ein Element (z.B. Textfeld dynamisch erzeugen lasse, mit document.createElement usw...)

          kann ich dieses element dann mit document.getElementByNames("")[0]
          ansprechen???

          das funkt nämlich nicht so richtig bei mir

          1. Hi,

            sicher, wenn'st den Funktionsaufruf richtig eingibst, d.h. "document.getElementsByName".

            Besser is noch document.getElementById (Element! statt ElementS!, kriegst nur eins, weil ID eindeutig sein muss im HTML-Dokument!), und is auch VIEL schneller.

            Abgesehen davon, mit document.createElement kriegst ja wohl ein Element zurück, d.h. sieht wohl so aus.

            myElem = document.createElement(...);

            Dann kannst normaler Weise auch so witermachen ...

            myElem.value = 123;
            myElem.style.marginLeft = 90;
            ...
            D.h. das getElementById/Name kannst dir sparen ... wenn nicht dann noch folgender Tip.

            Kann sein dass du nach document.createElement das Ding auch erst ins document einfügen musst ... siehe "insertBefore()" auf http://de.selfhtml.org/javascript/objekte/node.htm.

            Dann getElementById/Name funktioniert sicher ....

            Have fun!

            1. Hallo,

              Besser is noch document.getElementById (Element! statt ElementS!, kriegst nur eins, weil ID eindeutig sein muss im HTML-Dokument!), und is auch VIEL schneller.

              Welche dieser Methoden zum Einsatz kommen sollte, entscheidet einzig und allein die DOM-Struktur. Wenn man z.B. Formularelemente ohne IDs (nur mit notw. name) sucht, sollte man auch getElementsByName() verwenden. Alternativ stehen dafür natürlich auch die älteren Objekte zur Verfügung (forms, elements,…).

              mfg. Daniel

          2. Hi,

            kann ich dieses element dann mit document.getElementByNames("")[0]
            ansprechen???

            Hast du mal geschaut, was die Fehler-Konsole zu diesem Statement sagt?
            Die hätte dich darauf hingewiesen, dass es die von dir verwendete Funktion nicht gibt.

            mfG,
            steckl

  2. Hi,

    ich habe folgende Funktion:

    Das ist nur ein Auszug aus einer Funktion.

    Steht davor irgendwo:
    var string_value;
    ?

    for(var z = 2; z <= 4; z++)
    {
      if(document.getElementById("artnr_"+z).value != "")
      {
        alert("Pos "+z+" gesetzt");
        string_value += "<tr><td>"+z+"</td><td>"+document.getElementById("artnr_"+z).value+"</td></tr>";

    ...

    Diese Funktion soll nichts anderes tun, als mehrere Tabellenfelder durchzugehen und deren Werte hintereinander in einen String zu speichern. Dies sollte doch mit dem Operator += möglich sein, oder habe ich einen Denkfehler?

    Auf den ersten Blick sehe ich keinen Fehler.

    auf jeden Fall funktioniert es bei mir leider nicht

    Was heisst das konkret? Bekommst du eine Fehlermeldung in der Fehlerkonsole?
    Wie sieht in den einzelnen Durchlaeufen der Wert in string_value (kannst du ja mal mit alert anzeigen lassen) aus?

    kann mir jemand helfen?

    Wenn du dein Problem etwas genauer beschreibst sicher.

    mfG,
    steckl

    1. hi,

      habe vor der For-schleife die Variable string_value initialisiert und dann funktioniert es

      also:

      string_value = "";

      for(......

      Gruß

      Mika

      1. Hi,

        habe vor der For-schleife die Variable string_value initialisiert und dann funktioniert es

        also:

        string_value = "";

        Wenn du string_value nur in der Funktion verwenden willst solltest du "var" davor schreiben, da sie dann als lokale variable definiert wird. Ohne "var" definierst du string_value als globale Variable, was eine Zusaetzliche Fehlerquelle darstellt.

        mfG,
        steckl