![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 1 Dołączył: 19.08.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem. Chciałbym, żeby ktoś z Was podpowiedział mi jak mógłbym sobie napisać funkcję która zliczy mi zaznaczone checkboxy w tablicy. Checkboxy dodaję sobie dynamicznie. Oto funkcja dodająca checkboxy :
Kod function dodaj_element(kontener){ // var szkolenia = new Object(); // for (var i=0; i<<?php echo $licznik;?>; i++ ){ // szkolenia[i] = "<input type='checkbox' name='szkolenie"+i+"[]' value='zaznaczony' />"; // } var znacznik = document.createElement("input"); znacznik.setAttribute("type", "text"); znacznik.setAttribute("name", "uczestnicy[" + (index-1) + "]"); znacznik.setAttribute("style","margin-top:5px"); znacznik.className = "uczestnik"; var znacznik2 = document.createElement("input"); znacznik2.setAttribute("type", "text"); znacznik2.setAttribute("name", "stanowiska[]"); znacznik2.setAttribute("style","margin-top:5px"); znacznik2.className = "stanowisko"; var znacznik3 = document.createElement("input"); znacznik3.setAttribute("type", "text"); znacznik3.setAttribute("name", "stanowiska[]"); znacznik3.setAttribute("style","margin-top:5px"); znacznik3.className = "stanowisko"; var odstep = document.createElement("div"); odstep.setAttribute("style","clear:both"); var etykieta = document.createElement("div"); etykieta.setAttribute("style", "float: left; margin-left:20px; margin-right:10px; margin-top:5px;"); etykieta.innerHTML= index + ". Imie i nazwisko: "; var etykieta2 = document.createElement("div"); etykieta2.setAttribute("style", "float: left; margin-left:20px; margin-right:10px; margin-top:5px;"); etykieta2.innerHTML="Stanowisko: "; var etykieta3 = document.createElement("div"); etykieta3.setAttribute("style", " float: left; margin-left:20px; margin-right:10px; margin-top:5px;"); etykieta3.innerHTML="Zapisz na szkolenia: "; var proba = document.createElement("span"); proba.setAttribute("style","float:left; margin-top:5px") for (var j=0; j<<?php echo $licznik;?>; j++){ proba.innerHTML+=" "+(j+1)+". <input type='checkbox' name='szkolenie"+j+"[]' value="+(index-1)+" onClick='licz()' checked='checked' />"; } var kontener = document.getElementById(kontener); kontener.appendChild(odstep); kontener.appendChild(etykieta); kontener.appendChild(znacznik); kontener.appendChild(etykieta2); kontener.appendChild(znacznik2); kontener.appendChild(etykieta3); kontener.appendChild(proba); index++; id++; } i teraz chciałbym policzyć wszystkie zaznaczone checkboxy w tablicy szkolenie"+j+"[] - da się w ogóle coś takiego zrobić? nie mam pomysłu. Proszę o pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Proponowałbym zainteresować się biblioteką jquery.
Samo zliczenie zaznaczonych checkboxów możesz zrobić mniej więcej tak:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 1 Dołączył: 19.08.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
przyznam, że jQuery jeszcze mnie troche przeraża. W zasadzie zaczynam dopiero z js i stad to wszystko. Zaraz poeksperymentuje z Twoja propozycja, za która bardzo dziekuje. Jakby ktoś jeszcze miał jakieś inne rozwiązanie to też poprosze.
EDIT: Aha jeszcze mnie zastanawia jedna sprawa. Czy jezeli zapisuje sobie checkboxy do tablicy to czy nie mógłbym skorzystać z .length zeby zliczyć elementy tej tablicy? Próbuję ale nie bardzo chce działać. całość mojego "skryptu" wyglada tak : Kod <script type="text/javascript"> <!-- var index = 2; var id = 0; function dodaj_element(kontener){ // var szkolenia = new Object(); // for (var i=0; i<<?php echo $licznik;?>; i++ ){ // szkolenia[i] = "<input type='checkbox' name='szkolenie"+i+"[]' value='zaznaczony' />"; // } var znacznik = document.createElement("input"); znacznik.setAttribute("type", "text"); znacznik.setAttribute("name", "uczestnicy[" + (index-1) + "]"); znacznik.setAttribute("style","margin-top:5px"); znacznik.className = "uczestnik"; var znacznik2 = document.createElement("input"); znacznik2.setAttribute("type", "text"); znacznik2.setAttribute("name", "stanowiska[]"); znacznik2.setAttribute("style","margin-top:5px"); znacznik2.className = "stanowisko"; var znacznik3 = document.createElement("input"); znacznik3.setAttribute("type", "text"); znacznik3.setAttribute("name", "stanowiska[]"); znacznik3.setAttribute("style","margin-top:5px"); znacznik3.className = "stanowisko"; var odstep = document.createElement("div"); odstep.setAttribute("style","clear:both"); var etykieta = document.createElement("div"); etykieta.setAttribute("style", "float: left; margin-left:20px; margin-right:10px; margin-top:5px;"); etykieta.innerHTML= index + ". Imie i nazwisko: "; var etykieta2 = document.createElement("div"); etykieta2.setAttribute("style", "float: left; margin-left:20px; margin-right:10px; margin-top:5px;"); etykieta2.innerHTML="Stanowisko: "; var etykieta3 = document.createElement("div"); etykieta3.setAttribute("style", " float: left; margin-left:20px; margin-right:10px; margin-top:5px;"); etykieta3.innerHTML="Zapisz na szkolenia: "; var proba = document.createElement("span"); proba.setAttribute("style","float:left; margin-top:5px") for (var j=0; j<<?php echo $licznik;?>; j++){ proba.innerHTML+=" "+(j+1)+". <input type='checkbox' name='szkolenie"+j+"[]' value="+(index-1)+" onClick='licz()' checked='checked' />"; } var kontener = document.getElementById(kontener); kontener.appendChild(odstep); kontener.appendChild(etykieta); kontener.appendChild(znacznik); kontener.appendChild(etykieta2); kontener.appendChild(znacznik2); kontener.appendChild(etykieta3); kontener.appendChild(proba); index++; id++; } var suma=0; function licz() { var cashHolder = document.getElementById("cash"); for (var j=0; j<<?php echo $licznik;?>; j++){ for (var i=0; i<index; i++){ var licznik = document.getElementsByName("szkolenie"+j+"["+i+"]"); suma+=licznik; } } cashHolder.innerHTML=suma; } //--> </script> ma to w ogóle jakiś sens? edit2: sama funkcja zliczająca moje tablice checkboksów wygląda teraz tak, narazie nie korzystam z Twojego rozwiązania Vokiel, bo nie ukrywam, ze moje jest bardziej w moim toku myślenia, Twojego nie do konca rozumiem. Możecie mi powiedzieć dlaczego taka funkcja nie zlicza poprawnie? daje mi ciągle 0. ;/ Kod function licz() {
var licznik =0; var cashHolder = document.getElementById("cash"); for (var j=0; j<<?php echo $licznik;?>; j++){ for (var i=0; i<index; i++){ var stan = document.getElementsByName("szkolenie"+j+"["+i+"]").checked; if (stan == true) { licznik++; suma+=licznik;} } cashHolder.innerHTML=suma; } } Ten post edytował Marr 6.01.2009, 13:22:53 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zobacz tak:
Sprawdzaj poprzez alert san licznikow, bo moze się nie zwiększyły. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 1 Dołączył: 19.08.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
kurcze nadal coś mi nie działa ;/ wydaje mi się ze problem dotyczy
ponieważ jak za kazdym wywolaniem funkcji wyswietlam sobie alertem zmienna stan to zawsze jest undefinied - jakies pomysly? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 18:57 |