ChrisB: <map> funktioniert im IE nicht

Beitrag lesen

Hi,

Aber ChrisB oder Struppi haben das vermutlich besser im Kopf als ich

<answer style="voice-family:igor">You rang, Thur?</answer>

Ich dachte, nur bei <input>. Bzw. es funktioniert nur halb: Ein Zugriff auf das Feld über die elements-Collection oder getElementById geht nur, wenn man createElement("<input id='bla'>") verwendet hat (IIRC).

Ich hab' gerade noch mal einen kleine Test gemacht, zwei Formularfelder erzeugt, name und value gesetzt und in ein Formular eingehängt:

	var feld1 = document.createElement("input");  
	feld1.name = "feld1";  
	feld1.value = "feld1 value";  
	document.forms[0].appendChild(feld1);  
	var feld2 = document.createElement('<input name="feld2"\>');  
	feld2.value = "feld2 value";  
	document.forms[0].appendChild(feld2);  
	document.forms[0].elements[2].onclick = checkfields;

Per POST übermittelt der IE name=value für beide.

Wenn ich über document.forms[0].elements per for-Schleife iteriere, und mir
document.forms[0].elements[i].name
und
document.forms[0].elements[i].value
zur Kontrolle ausgeben lasse, liefert er mit auch für beide(!) den Namen und Inhalt.

Erst dann, wenn ich versuche über document.forms[0].elements['feld1'] zuzugreifen, scheitert es, ergibt undefined.
document.forms[0].elements['feld2'] hingegen ist ansprechbar.

Der Inhalt von name ist also schon irgendwie vorhanden, und auch ermittelbar, wenn man das Feld bspw. über seinen nummerischen Index in der elements-Collection anspricht.
Nur der direkte Zugriff über den Namen ist beim "normal" erzeugten Inputfeld nicht möglich; bei dem mit der zweiten Methode mit "IE-Syntax" erzeugten aber sehr wohl.
Diese IE-Extrawurst muss man also nur dann braten, wenn man wirklich Zugriff auf das Feld über seinen Namen benötigt.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.