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.
 

Neue Beiträge

Zurück