Autor | Zpráva | ||
---|---|---|---|
Martin02 Profil |
#1 · Zasláno: 10. 3. 2012, 21:59:26
Ahoj,
potřeboval bych, aby když na něco kliknu, zaškrtlo se políčko (input type checkbox). Zkoušel jsem to takhle, ale nešlo mi to, nevíte někdo proč? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <input type="checkbox" name="n1"><br /> <input type="button" onclick="document.getElementByName('n1').checked = true;"> </body> </html> děkuji |
||
DarkMeni Profil |
#2 · Zasláno: 10. 3. 2012, 22:36:22
Ono to najde elementy s názvel n1, kterých může být víc, takže buď napsat i jeho index:
document.getElementsByName('n1')[0].checked = 'checked';//Nevim jak se bude prohlížeč chovat, když narazí na logickou hodnotu true <element id="idecko"> <element2 onclick="document.getElementById('idecko').checked = 'checked';"> |
||
Fisir Profil |
Reaguji na Martina02 [#1]:
Používá se getElementsByName . Tobě chybí „s“. A musíš zapsat i index elementu, protože jich se stejným name může být více. (Nebo použít id a s indexem se nebudeš muset trápit.)
Reaguji na DarkMeniho [#2]: „Nevim jak se bude prohlížeč chovat, když narazí na logickou hodnotu true“ Alespoň mému Chromu logická hodnota nevadí. |
||
Martin02 Profil |
#4 · Zasláno: 11. 3. 2012, 17:24:07
Moc děkuji, tohle vyřešilo jeden problém, ale pak jsem si chtěl udělat funkci, která takhle zaškrtne 10 checkboxů. To už mi nešlo :(
<html> <script type="text/javascript"> function projdi() { for(i = 1; i <= 10; i++) { var name = "n" + i; var cislo_pole = i - 1; var pole = document.getElementsByName(name)[cislo_pole]; pole.checked = "checked"; } } </script> <input type="checkbox" name="n1"><br /> <input type="checkbox" name="n2"><br /> <input type="checkbox" name="n3"><br /> <input type="checkbox" name="n4"><br /> <input type="checkbox" name="n5"><br /> <input type="checkbox" name="n6"><br /> <input type="checkbox" name="n7"><br /> <input type="checkbox" name="n8"><br /> <input type="checkbox" name="n9"><br /> <input type="checkbox" name="n10"><br /> <input type="button" value="Projít" onclick="projdi()"> </html> Proč? |
||
Fisir Profil |
#5 · Zasláno: 11. 3. 2012, 17:46:11
Reaguji na Martina02 [#4]:
Co takhle: <html> <script type="text/javascript"> function zaskrtni() { document.getElementById("n1").checked = true; document.getElementById("n2").checked = true; document.getElementById("n3").checked = true; document.getElementById("n4").checked = true; document.getElementById("n5").checked = true; document.getElementById("n6").checked = true; document.getElementById("n7").checked = true; document.getElementById("n8").checked = true; document.getElementById("n9").checked = true; document.getElementById("n10").checked = true; } </script> <input type="checkbox" id="n1"><br /> <input type="checkbox" id="n2"><br /> <input type="checkbox" id="n3"><br /> <input type="checkbox" id="n4"><br /> <input type="checkbox" id="n5"><br /> <input type="checkbox" id="n6"><br /> <input type="checkbox" id="n7"><br /> <input type="checkbox" id="n8"><br /> <input type="checkbox" id="n9"><br /> <input type="checkbox" id="n10"><br /> <input type="button" value="Projít" onclick="zaskrtni()"> </html> |
||
Martin02 Profil |
#6 · Zasláno: 11. 3. 2012, 17:55:18
To mě také napadlo, ale určitě by to šlo i jednodušeji ne? A navíc, musí to být dělané přes name, ne přes id
|
||
Fisir Profil |
#7 · Zasláno: 11. 3. 2012, 17:57:55
Reaguji na Martina02 [#6]:
„musí to být dělané přes name, ne přes id“ Tak těm prvkům nastav name i id .
|
||
panther Profil |
#8 · Zasláno: 11. 3. 2012, 18:03:32
Martin02:
<script type="text/javascript"> function projdi() { var name = "n[]"; var pole = document.getElementsByName(name); for(i = 0; i < pole.length; i++) { pole[i].checked = "checked"; } } </script> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="checkbox" name="n[]"><br> <input type="button" value="Projít" onclick="projdi()"> Použij pro pojmenování inputů pole, použití indexů znamená téměř vždy špatný návrh aplikace. Navíc, při změně počtu inputů nebudeš muset měnit rozsah v JS. |
||
Tori Profil |
#9 · Zasláno: 11. 3. 2012, 18:03:37
Martin02:
Můžete využít toho, že všechny zaškrtávátka patří do stejného formuláře: <input type="button" value="Projít" onclick="projdi(this.form)"> function projdi(f) { // fce dostane odkaz na formulář s checkboxy for(i = 1; i <= 10; i++) { if (f["n"+i]) { // ochrana proti tomu, že bude některé číslo (třeba "n5") chybět f["n"+i].checked = true; } } } |
||
Časová prodleva: 12 let
|
0