Joe Koenig: getElementsByName auf bestimmte Formulare anwenden

Beitrag lesen

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]