<head> <script language="JavaScript" type="text/javascript"> function updateForm(od,cel) { var len=cel.options.length; for (i=0; i <= len; i++) { cel.options[i] = null; } for(i=0; i < od.length; i++) { if (od.options[i].selected == true) { switch (od.options[i].value) { case '1': cel.options[0] = new Option('Materiały','7'); cel.options[1] = new Option('Urządzenia','8'); cel.options[2] = new Option('Inne','9'); break; case '2': cel.options[0] = new Option('Czyściwa','10'); cel.options[1] = new Option('Urządzenia doz.','11'); cel.options[2] = new Option('Ubrania ochronne','12'); cel.options[3] = new Option('Pasty do rąk','13'); cel.options[4] = new Option('Inne','14'); break; } } } } </script> </head> <body> <form name='formularz' action='nowy.php' method='POST'> <select size='6' name='grupa1' onChange="updateForm(this,grupa2); return true;"> </select> <select size='6' name='grupa2' onChange="updateForm(this,grupa3); return true;"> </select> <select size='6' name='grupa3' onChange="updateForm(this,grupa4); return true;"> </select> </form> </body>
wszystko działa tak jak należy dopiero po trzykrotnym wykonaniu tego kodu:
for (i=0; i <= len; i++)
{
cel.options[i] = null;
}
dlaczego nie po jednokrotnym? o co chodzi? Nie ma konfliktu ze zmienną globalną bo nie ma takowej ;p