• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

beim Auslesen mit document.getElementById ist value immer undefined

betra

New member
Ich habe auf einer Seite einen Button mit dem ich via onClick ein Javascript aufrufe das einige Felder der Seite auslesen soll.
HTML:
<textarea id="TxtBauStein1" class="txtbau" cols="60" rows="5" wrap="hard" readonly>Textbaustein1</textarea>
<input type="button" onclick="transferText('TxtBauStein1',4);" value="obigen Textbaustein übernehmen" />

<td><input type="checkbox" name="sel2" id="sel2" value="2" /></td>
<td>Frau</td>
<td>Viel W.</td>
<td style="text-align:center;" id="lang2">DE</td>

Den Wert 'Textbaustein1' aus der textarea kann das Script auslesen.
Den 'select' Status der Checkbox kann es auch auslesen.
Den Wert 'DE' aus dem td Feld nicht. Immer undefined.

Hier das Script:
Code:
function transferText(TxtBauStein,ct){
  var source = document.getElementById(TxtBauStein);
  var target = document.getElementById('TxtArea');
  var sourceText = source.value;
  var targetText = target.value;
  target.value = targetText + ' ' + sourceText;
	var lang = '';
	for ( var i=1; i < ct; i++ ) {
		if ( eval('document.jobshow.sel'+i+'.checked') == true ) { 
			target.value = target.value + ' ' + "die checkbox ist aktiviert!"; 
			var lang = document.getElementById('lang2'); 
			target.value = target.value + ' ' + lang; 
			var langv = lang.value; 
			target.value = target.value + ' ' + langv; 
			break;
		}
	} 
}

Und hier die Ausgaben die das Script macht:

Textbaustein1
die checkbox ist aktiviert! [object HTMLTableCellElement] undefined

Ich bin kein besonders erfahrener JavaScripter.
 
Zuletzt bearbeitet:
Hab ein Lösung gefunden:
NICHT 'lang.value' abfragen sondern 'lang.innerHTML'

Jetzt sieht die Ausgabe des Scripts so aus:

Textbaustein1
die checkbox ist aktiviert! [object HTMLTableCellElement] DE
 
Danke für den Hinweis mit eval.
Die Bedenken gegen sowas hab ich auch schon öfter gelesen.
Hab allerdings den Hinweis auf Schema 4 nicht komplett verstanden.

Die Umstellung von:
if ( eval('document.jobshow.sel'+i+'.checked') == true ) {
auf
if (document.jobshow.elements["sel"+i].checked == true ) {
hat funktioniert.

Zusätzlich hab ich jetzt noch ein 2. eval im Script:
var lang = eval("document.getElementById('lang"+i+"')");
da funktioniert ein Analogschluss:
var lang = document.elements["lang"+i];
leider nicht.

NACHTRAG: mit
var lang = document.getElementById(["lang"+i]);
gehts auch hier ohne eval.
 
Zuletzt bearbeitet:
Das das im zweiten Code mit den eckigen Klammern funktioniert hat mich jetzt etwas überracht, da das ja ein Arrayliteral erzeugt...

Normalerweise schreibt man das so:
Code:
var lang = document.getElementById("lang" + i);
- das eval war da also doppelt unnötig...

PS: verwende bitte die
Code:
-Tags - macht den Code viel lesbarer.
 
Zurück
Oben