Zuweisungsoperator +=
Mika
- javascript
1 dr.colossos0 steckl
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
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
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
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.
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
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!
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
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
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
hi,
habe vor der For-schleife die Variable string_value initialisiert und dann funktioniert es
also:
string_value = "";
for(......
Gruß
Mika
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