Autor Zpráva
Pavel Dumbrovský
Profil
Zdravím Vás,
prosím o radu, v JS začínám a nevím co s tím.
Mám dva selecty, výběr kategorie a podkategorie a chci, aby se mi v v tom selectu podkategorie vypsalo pole optionů podle toho, jaký je vybraný select kategorie.
Zatím jsem to zkusil takto, ale to nejede:
Touto funkcí měním pole pro výpis podkategorií:
function setKat() { 
var aktualni_kategorie;
aktualni_kategorie="podkategorie";
aktualni_kategorie+=document.formular.kategorie.value;
podkategorie=aktualni_kategorie;
alert(aktualni_kategorie);
}


Tady volám tu funkci setKat()
<select name="kategorie" onChange="setKat()">


A tady se mají vypsat ty podkategorie, ale s document.write to samozřejmě po načtení stránky už nepůjde, jak na to prosím?
		<script>
		for (var podkategorie in podkategorie) {document.write (podkategorie [jmeno]);}
		</script>
Radek Cvek
Profil
<script language="JavaScript" type="text/javascript">
function setKat()
  {
  for (var i=0; i<document.formular.podkategorie.length; i++) document.formular.podkategorie.remove(i);
  if (document.formular.kategorie.value=='ovoce') 
    {
    document.formular.podkategorie.options[0]=new Option("jablko", "jablko", false, false);
    document.formular.podkategorie.options[1]=new Option("hruška", "hruška", false, false);
    document.formular.podkategorie.options[2]=new Option("švestka", "švestka", false, false);
    }
  if (document.formular.kategorie.value=='zelenina') 
    {
    document.formular.podkategorie.options[0]=new Option("celer", "celer", false, false);
    document.formular.podkategorie.options[1]=new Option("mrkev", "mrkev", false, false);
    }
   }     
</script> 


<form name="formular">
  <select name="kategorie" onChange="setKat();">
    <option value="ovoce">ovoce</option>
    <option value="zelenina">zelenina</option>
  </select>
  <select name="podkategorie">
  </select>
</form>
Pavel Dumbrovský
Profil
Děkuji za pomoc,
tady ty formulářové elementy neznám. Nevíte o nějaké stránce, kde je seznam takovýchto elementů, které jdou měnit pomocí js, něco jako uvedené document.formular.podkategorie.options[]?

Díky!
Radek Cvek
Profil
Pomocí javascriptu lze měnit snad úplně všechny formulářové atributy - a to docela předvídavě:
<input value="hodnota"> se mění .value=jinahodnota
<input checked="checked"> se mění .checked=false a naopak .checked=true
<input disabled="disabled"> se mění .disabled=false a naopak .disabled=true
... a podobně viz. odkaz
já se to teprve učím a pomáhá mi toto
perfektní na tom portálu je Try it yourself » - otevře se okno, kde se dá měnit javascriptový kód a učit se to pokus-omyl - jak to dělám já
Pro javascript odborníky:
co se týče kódu výše - vymazávám všechny optiony pomocí cyklu
for (var i=0; i<document.formular.podkategorie.length; i++) document.formular.podkategorie.remove(i);

ale vygůgloval jsem, že by se to dalo takto:
document.formular.podkategorie.options.length=0; 

což znamená, že místo cyklu, který prochází všechny optiony a maže je, bych to hned vymazal najednou - ale mě to nefunguje! V čem je chyba?
Pavel Dumbrovský
Profil
Radek Cvek:
Pomocí javascriptu lze měnit snad úplně všechny formulářové atributy
To už jsem taky zjistil a co jiné věci než formuláře? Vím že to jde pomocí id nebo class, třeba změnit barvu, nebo nastavit dipslay:none; a podobně, ale když chci napřiklad na stránce prostě vypsat nějaký početní výsledek a měnit ho třeba na kliknutí někam?
Tori
Profil
Pavel Dumbrovský:
když chci napřiklad na stránce prostě vypsat nějaký početní výsledek a měnit ho třeba na kliknutí někam
Výsledek pište do nějakého elementu, jehož obsah budete měnit pomocí vlastností id a innerHTML.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0