Dynamisch erzeugte Radio button auslesen.

bank24

Grünschnabel
Hi ich erzeugte in einer Javascript funktion folgende radiobutton:

HTML:
case "S":
	div_Portal.innerHTML += "<form name=\"PortalForm\" action=\"\" method=\"post\">";
	div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s3' onclick=\"fillServerE('S');\" />Portal 1<br />";
	div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s2' onclick=\"fillServerE('S');\" />Portal 2<br />";
	div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s1' onclick=\"fillServerE('S');\" />Portal 3<br />";
	div_anwendung.innerHTML += "</form>";
	break;

diese möchte ich dann in der nächsten Funktion auslesen:

alert(document.PortalForm.elements.length);

und im alertfenster steht immer 0, anstatt 3...

ist bestimmt wieder irgendein kleiner denkfehler, aber ich komm nicht drauf :(
 
Warum steht in diser Zeile nicht "div_Portal" sondern:

Code:
div_anwendung.innerHTML += "</form>";

Dann würde ich an deiner Stelle alle \"irgendwas\" einfach 'irgendwas' schreiben. Ich habe damit öfters auch schon Probleme gehabt weil ich dann mit einfachem " und \" durcheinander gekommen bin.

Dieser leicht abgewandelte Code funktioniert:
Javascript:
<script language="javascript" type="text/javascript">
function test () {
div_Portal.innerHTML += "<form name='PortalForm' action='' method='post'>";
div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s3' onclick='test2(this.value);' >Portal 1<br />";
div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s2' onclick='test2(this.value);' >Portal 2<br />";
div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s1' onclick='test2(this.value);' >Portal 3<br />";
div_Portal.innerHTML += "</form>";
}

function test2(wert) {
	alert("Wert ist gleich: " + wert);
	alert(document.getElementsByName("Zahlmethode3").length);
}
</script>

<div onclick="test();">Click</div>
<p></p>
<div id="div_Portal"></div>
 
Zuletzt bearbeitet:
Warum steht in diser Zeile nicht "div_Portal" sondern:

Code:
div_anwendung.innerHTML += "</form>";

Dann würde ich an deiner Stelle alle \"irgendwas\" einfach 'irgendwas' schreiben. Ich habe damit öfters auch schon Probleme gehabt weil ich dann mit einfachem " und \" durcheinander gekommen bin.

Dieser leicht abgewandelte Code funktioniert:
Javascript:
<script language="javascript" type="text/javascript">
function test () {
div_Portal.innerHTML += "<form name='PortalForm' action='' method='post'>";
div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s3' onclick='test2(this.value);' >Portal 1<br />";
div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s2' onclick='test2(this.value);' >Portal 2<br />";
div_Portal.innerHTML += "<input name='Zahlmethode3' type='checkbox' value='s1' onclick='test2(this.value);' >Portal 3<br />";
div_Portal.innerHTML += "</form>";
}

function test2(wert) {
	alert("Wert ist gleich: " + wert);
	alert(document.getElementsByName("Zahlmethode3").length);
}
</script>

<div onclick="test();">Click</div>
<p></p>
<div id="div_Portal"></div>

Methode test2() ersetzt durch:

function test2(wert) {
alert(document.forms['PortalForm'].elements.length);
}

leider kommt da immer noch eine 0 raus. da sollte doch eine 3 stehen oder? Danke schonmal für deine Hilfe.

Ich möchte ja anschließend mit einer for-Schleife meine checkboxen durchgehen und testen, ob sie markiert sind.
 
Hi,

habe gerade selbst den Fehler gefunden.

Ich weiß nicht warum, aber JS setzt hinter die ersten Zeile "<form name='PortalForm' action='' method='post'>"; direkt wieder ein </form>

daher findet die Methode test2 dann nicht die elemente , welche im Formular sein sollten.

Weiß einer wieso das so ist? Ich muss jetzt halt alles in eine Zeile klatschen. geht natürlich aus, sieht aber nicht so schön aus.
 
Zurück