Auf dynamisch erzeugtes input-Feld zugreifen und Inhalt auslesen

F

Frozenlife

Hallo,

ich habe ein kleines Problem. Und zwar weise ich in Javascript eine division in meiner Homepage den Inhalt zu:

Sieht zurzeit ungefähr so aus:
Javascript:
  content += "<input type='text' id='username' size='20' value=''>";
  content += "<input type='password' id='password' size='10'>";
  content += "<input type='button' onclick='login(true)' value='[TX_LOGINBUTTON]'>";
...
  document.getElementById('new_logincontent').innerHTML = content;

Jetzt will ich in der Javascript-Funktion: login() auf das input-Feld zugreifen und den eingegeben Inhalt auslesen:

Javascript:
...
  username = window.document.getElementById('username').value;
  alert(username);
...

Leider gibt es da ein großes Problem: "username" bleibt immer leer. Es steht immer nur das drin, was ich im value-tag im input-feld definiere (value=''), und nicht das, was ich dann per Tastatur eingebe.

Nun ist es so, wenn ich den ersten Teil, direkt in meine HTML Datei einbau, es ganz normal funktioniert. Es gibt also irgendwie Probleme mit der dynamischen Ausgabe der Felder und dann den Zugriff darauf.

Kann mir da jemand weiterhelfen. Danke schon einmal.

mfg
 
Zuletzt bearbeitet von einem Moderator:
getElementById kann nur auf Elemente zugreifen die sich im DOM befinden.
Da Du das feld jedoch nicht dem DOM hinzufügst, ist es offiziel gar nicht vorhanden.

Benutze statt dessen document.createElement("input"); und hänge es dann an die gewünschte position


var inp = document.createElement("input");
inp.setAttribute("type","button");
...
document.getElementById('new_logincontent').appendChild(inp);
 
Ok, also ich habs gerade so gemacht und es funktioniert:

Javascript:
...
  content += "<input type='text' name='uname' value='' id='uname' size='20'>";
  content += "<input type='password' name='password' id='password' size='10'>";
  content += "<input type='button' onclick='login(true)' value='[TX_LOGINBUTTON]'>";
Javascript:
  username = window.document.getElementsByName('uname');
  alert(username[1].value);

Damit hats jetzt funktioniert, aber deine Methode könnte ich auch probieren, falls es zu anderen Problemen kommt die bisher noch nicht auftraten.

Danke einmal.
 
Moin,

ich würde mal etwas ganz anderes vermuten.

Du schreibst, dass username[1].value funktioniert. Das würde ein Indiz dafür sein, dass du mindestens 2 Elemente mit dem Namen uname im Dokument hast.

Wenn das bei dem ersten Versuch anhand der ID auch so war, liefert das wohl nicht das gewünschte Ergebnis, weil auf das andere Element zugegriffen wurde.
 
Es könnte so sein, jap. Das war ein unerwünschter Nebeneffekt, da ich 2 divs hab die beide die selben HTML Tags haben (hatte ich ganz vergessen). Und ich habe mit [0] immer auf das falsche zugegriffen und dass es da mit id's auch nicht funktioniert, ist dann auch klar :) ... *wiedumm* :)

Aber trotzdem mal danke

mfg
 
Zurück