getElementsByName auf bestimmte Formulare anwenden
Joe Koenig
- javascript
0 Gernot Back
0 Edgar Ehritt0 Joe Koenig0 Struppi
Hallo,
ich hole mir Elemente per
elemente = document.getElementsByName("elemente_1");
und stelle dann /Dinge/ damit an :-)
Dabei erwische ich auch gleichnamige Elemente aus verschiedenen Formularen. Was ich eigentlich möchte ist sowas wie:
elemente = document['form_1'].getElementsByName("elemente_1");
Aber das geht ja nicht. Als einziger Workaround fällt mir jetzt nur ein:
if (elemente[x].parentNode.name == "form_1") { ... }
Fällt euch was eleganteres dazu ein?
Joe
Hallo Joe,
Dabei erwische ich auch gleichnamige Elemente aus verschiedenen Formularen. Was ich eigentlich möchte ist sowas wie:
elemente = document['form_1'].getElementsByName("elemente_1");
Aber das geht ja nicht. Als einziger Workaround fällt mir jetzt nur ein:
if (elemente[x].parentNode.name == "form_1") { ... }Fällt euch was eleganteres dazu ein?
Ja,
if (elemente[x].form.name == "form_1") { ... }
oder
elemente = document.getElementsByName('form_1')[0].getElementsByName("elemente_1");
Was hast du vor? Willst du etwa z.B. gecheckte Radiobuttons bei erneutem Klick so wie Checkboxen wieder ungecheckt machen? Dann kannst du ja auch ihr jeweiliges Fromular über this.form ansprechen und alle ihre darin enthaltenen gleichnamigen Geschwister über this.form.elements[this.name]
Gruß Gernot
Hallo,
elemente = document.getElementsByName('form_1')[0].getElementsByName("elemente_1");
elemente = document.getElementsByName('form_1')[0].getElementsByName("elemente_1")[0];
Gruß Gernot
schön Dich auch mal wieder zu lesen. :)
Gruß aus Berlin!
eddi
Hallo Gernot,
elemente = document.getElementsByName('form_1')[0].getElementsByName("elemente_1");
Also, das scheint hier nicht zu klappen.
document.getElementsByName('form_1')[0]
ist doch ein form-Element und kennt somit getElementsByName() nicht, oder? Getestet mit Mozilla Firefox 2.0.0.14 auf Linux.
var gnubbel = document.form_1.getElementsByTagName('input');
geht natürlich auch nicht, da nicht immer alle input-Element angesprochen werden sollen. Und immer divs um alle betroffenen Elemente packen ist auch doof.
Hier ein kleines Beispiel:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<HEAD>
<script type="text/javascript" language="JavaScript"><!--
[code lang=javascript]
function foo(elemente, formname)
{
var gnubbel = document.getElementsByName(elemente);
// var gnubbel = document.getElementsByName(formname)[0].getElementsByName(elemente);
var zahl = gnubbel.length;
for (i=0; i < zahl; i++){
gnubbel[i].setAttribute("type", "radio");
gnubbel[i].style.marginLeft = "50px";
}
}
//--></script>
</HEAD>
<body>
<form name="form_1" id="form_1" style="margin:200px 200px; border:1px solid;">
<a href="javascript:foo('s1', 'form_1')">foo</a><br><br>
<input type="checkbox" name="s1" id="s01" value="1">1<br>
<input type="checkbox" name="s1" id="s02" value="2">2<br>
<input type="checkbox" name="s1" id="s03" value="3">3<br>
<input type="checkbox" name="s1" id="s04" value="4">4<br>
</form>
<form name="form_zwei" id="form_zwei" style="margin:200px 200px; border:1px solid;">
Diese Elemente sollen nicht angesprochen werden:<br>
<input type="checkbox" name="s1" id="s05" value="1">1<br>
<input type="checkbox" name="s1" id="s06" value="2">2<br>
<input type="checkbox" name="s1" id="s07" value="3">3<br>
<input type="checkbox" name="s1" id="s08" value="4">4<br>
</form>
</body>
</html>
[/code]
Hallo Gernot,
elemente = document.getElementsByName('form_1')[0].getElementsByName("elemente_1");
Also, das scheint hier nicht zu klappen.
Das http://de.selfhtml.org/javascript/objekte/elements.htm klappt einwandrei.
Struppi.