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.
este neco:
ty indexy u nazvu form name= f>1<m div id= div>1< atd... jsou v php cyklu... takze je jich tam treba 50 zacinaji 0 po 49, a dotaz:
v te javascript funkci je getElementById(' NECO ') a misto toho NECO bych tam chtel dat neco 'dynamicky' abych ten javaScript nemusel mi v mem pripade 50x ale jen jednou s tim ze to neco by se menilo div0 potom div1 atd.... to cislo za div se snad da nacist z argumentu ktery ten javascript fukci predavam, ale nevim jak, tak na to se ptam.
Pokud máš ten argument v PHP tak není problém napsat ten kód
Doufám, že se nepletu. Šak mě kdyžtak někdo opraví :)
Nemá to s PHP žádnou souvislost.
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?