
Chyba v JavaScriptovém kódu
Ahoj, mohl by někdo najít chybu někde v tomto kódu ?
<script ..... >
function zmena(s) {
var t=s.options[s.selectedIndex].value;
if (t=="nova") document.getElementById('div1').style.display="block";
}
</script>
<form name="f1"....>
<SELECT name="skupina" onChange="zmena(this)">
....
....
<div id="div1" style="display: none;"> <input type="text" name="t1"> </div>
</form>
Určitě tam někde je, jenže nevim kde, prosím pomozte mi ... Díky všem.
Chyba je pravděpodobně v přístupu k prvku select box.
Vhodné je si jej pojmenovat přes jedinečný identifikátor (ID) nebo k němu přistupovat přes automaticky vytvořené pole.
Můžeš k němu přistupovat postaru nejjednodušeji:
Bez záruky ....
Já odpovídal na ten druhý dotaz:
Jo. Rozepiš se podrobněji. Nechápu co myslíš a jsem unavený (tam to s tím PHP).
Protože pokud si dobře pamatuji tak některé prohlížeče neposílají hodnoty jiných inputů než ty, které jsou v rámci
formuláře, který byl odeslán.
Co tím myslím ?
Pokud je odeslán formulář první, pak (tuším Internet Explorer !) neposílá obsah
prvků, které nejsou v rámci formuláře.
Tedy nic z formuláře2 (nejakyFormular2) se neodešle !
v tom kodu neni chyba,. jen sem se chtel zeptat na toto:
jesli ze zaslaneho parametru THIS ve funkcni zmena muzu nejak dostat nazev formulare ve kterem se dany select nachazi. Portoze na radku: if (t=="nova") document.getElementById('div1').style.display="blo ck"; potebuju dynamicky menit strind 'div1' a to takto: jednali se o nazev formulare f1, bude to div1, je-li nazev formulare f2, bude to div2 atd....
protoze na stance techto formularu muze byt X (generovane pres php) a nechci v kazdem cyklu vytvarek dynamicky novou JS funkci zmena1 potom zmena2 zmena3, kdyz se v dane fci bude menit jen ten jeden jiz zminovany strind 'div1' div2 atd...
Nevím co chceš udělat takže nakonec můžeš narazit velmi hrubě na nějaký zádrhel (viz. moje předchozí odpověď)
Co se týče toho formuláře můžeš zjistit o jaký se jedná buďto:
zmena(this.form.id) // předá funkci název identifikátoru
zmena(this.form.name) // Předá funkci jako parametr název formuláře.....
Toto bude funkce volana pri onchange selectboxu.....
Ak si posielaš do funkcie select, tak k názvu formulára sa dostaneš prostredníctvom select.form.name. K samotnému číslu sa dostaneš už jednoducho metódou substr.
Netestované, takže tam môžu byť chyby, ale je vidno princíp:
50 formulárov na stránke? To je celkom dosť. Naozaj potrebuješ odosielať každý formulár na inú adresu?