PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : javascript: for-schleife wird nich durchlaufen



ThorstenHirsch
11-03-2004, 16:51
Servus!

Warum wird diese Schleife nicht durchlaufen?

function getDN(){
function getDN(){
objekt = document.auswahl.gewaehlt;
for (i = 0; i < objekt.length; i++){
if (objekt[i].checked)
return objekt[i].value;
}
}


document.auswahl.gewaehlt ist eine Radio-Buttongruppe mit nur 1 Radio-Button. Wenn's mehr sind funktioniert's, aber bei nur 1 musste ich die Funktion folgendermaßen umschreiben damit's funktioniert:



function getDN(){
objekt = document.auswahl.gewaehlt;
$dn = objekt.value;
for (i = 0; i < objekt.length; i++){ if (objekt[i].checked)
$dn = objekt[i].value;
}
return $dn;
}

Steh ich etwa auf'm Schlauch?

undefined
11-03-2004, 17:11
Du kannst bei radio nur den Zustand des Objektes abfragen.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title></title>
<meta name="GENERATOR" content="Quanta Plus">
<script language="javascript" type="text/javascript">
// <!--
function getDN(obj){
for (i = 0; i < obj.length; i++){
if(obj[i].type == "radio" && obj[i].checked == true)
alert(obj[i].name+" "+obj[i].value);
}
}
// -->
</script>
</head>
<body>
<form action="#" method="post" onsubmit="return getDN(this)">
<input type="radio" name="set" value="1" checked="true" />
<input type="radio" name="set" value="1" />
<input type="radio" name="set" value="3" />
<input type="submit" />
</form>

</body>
</html>

ThorstenHirsch
11-03-2004, 18:59
Wie meinen?

Den Zustand des Objekts frag ich doch auch ab mit

if (objekt.checked)

Wenn du meinst dass

return objekt[i].value;
nicht geht, muss ich dir widersprechen. Das geht nämlich.
Es wird bloß nicht aufgerufen wenn ich nur 1 RadioButton habe. Bei mehreren wird's aufgerufen und es funktioniert auch. Also müsst's doch an der Schleife liefen, oder?

undefined
11-03-2004, 20:05
Habe ich was behauptet? Na egal, ich habe dir im Beipiel aufgeführt wie es auf allen Browsern funktioniert.
Objekt obj ist das Form Element es werden alle Elemente innerhalb von form durchlaufen.
Wenn Element [i] vom type radio ist und checked dann kannst du mit return ohne weiteres Arbeiten jedoch wird die Schleife dann sofort verlassen ;)

ThorstenHirsch
11-03-2004, 20:13
Ich hab den Grund gefunden:

<form name="nix">
<input type=radio name="gewaehlt" value="abc">
</form>
<script language="JavaScript">
document.write(document.nix.gewaehlt.length);
</script>
liefert undefined zurück.
Erst ab zwei Elementen wird ne Zahl geliefert.

Mensch, hätt ich nur mal deinen Benutzernamen etwas genauer angeschaut... :D