Ho già avuto questo problema. Infatti la soluzione è semplice. Ad ogni richiamo della funzione bisogna fare come se fosse il primo richiamo. Quindi anche la variabile i deve essere var.
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script language="JavaScript" type="text/javascript">
<!--
function test(Obj) {
var i = 0;
for(i=0;i<document.getElementById(Obj).children.length;i++) {
var theObj = document.getElementById(Obj).children(i);
alert('Ctrl ' + i + ' = ' + theObj.id + ' - ' + theObj.tagName + ' - ' + theObj.type);
if(theObj.children.length>0) {
test(theObj.id);
}
}
}
//-->
</script>
</head>
<body>
<Form name="MainForm" id="MainForm" Action=# Type=POST>
<div id=d1>
<Input Type=text id=a>
</div>
<div id=d2>
<Input Type=text id=b>
</div>
<div id=d3>
<Input Type=text id=c>
</div>
<div id=d4>
<Input Type=button Id=Submit Value=Send onClick="javascript:test('MainForm');">
</div>
</Form>
</body>
</html>