Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Dynamiczne zaznaczanie checkbox w TR nie działa jak trzeba
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
mapy
A więc tak...

Robię sobie skrypcik rejestrujący informacje o wchodzacych na moja strone (w przygotowaniu) i sprawa wyglada tak:
Po zaznaczeniu jakiegoś wiersza (w ostatniej kolumnie checkbox'a) powinien wiersz zmienic kolor, i tak jest gdy zaznaczam go bezposrednio ręcznie, natomiast gdy uzywam zaznaczania dynamicznego (czyli jednym zaznaczeniem zaznaczaja sie wszystkie wiersze - sluzy do tego checkbox w pierwszym wierszy w ostatniej kolumnie, to nie jest wywolywana akcja w wierszach onchange i nie zmienia się kolor. Sprawdzałem to pod FF i operą i tak wlasnie działa. Kto swie co zrobi, zby mi to dynamicznie dzialalo?

Link do strony: [juz niepotrzebny, wiec skasowalem]
vokiel
O ile dobrze widzę, to skrypcie masz taką linijkę kodu, która odpowiada za kolorowanie wiersza po kliknięciu w checkbox'a:

  1. idtr.style.backgroundColor='red'


zatem dodaj to do pętli:
  1. function check_all()
  2. {
  3. for (x=1;x<300;x++)
  4. {
  5. if (document.getElementById('cb'+x).checked==false)
  6. {
  7. document.getElementById('cb'+x).checked=true
  8. /* tutaj wstawiasz kod który zmieni ten kolor na czerwony. czyli możesz np wywoływać tą funkcję
  9. dla pojedynczego elementu*/
  10. }
  11. else
  12. {
  13. document.getElementById('cb'+x).checked=false
  14. /* tutaj wstawiasz kod który zmieni kolor na poprzedni */
  15. }
  16. }
misiek172
mapy "pomyśl odrobine więcej niż myślisz", nie kolorowało się ponieważ zdarzenie onChange nie zachodziło, bo js nie wywołuje zdarzenie w momecie dynamicznej zmiany.

Pozatym skoro zaznacze no to na chłopski rozum powinno sie odrazu skojarzyc aby dozucic do pętli tez polecenie kolorujące wiersze.
vokiel
wypisujesz tą tabelkę o ile się nie mylę za pomocą php
zatem podczas tworzenia kodu strony poprzez echo tworzysz ten skrypt js i tam wstawiasz zmienna ile było wierszy.

Wyświetlasz tą tabelkę pewnie pobierając dane z bazy, zatem możesz policzyć ile było wierszy, zapisać to do zmiennej np $ilosc_rekordow, a potem użyć.
czyli Twój skrypt php by wyglądał tak:

  1. <?php
  2. //...
  3. ///tworzenie strony i całego tego skryptu poprzez funkcję echo()
  4. // dochodzimy do tej funkcji check_all()
  5.  
  6. echo "function check_all() {
  7.  for (x=1;x<".$ilosc_rekordow.";x++) { // w tej linijce wstawiasz ilosc powtórzeń
  8.  if (document.getElementById('cb'+x).checked==false) {
  9. ";  
  10. // i ta dalsza część skryptu...
  11. ?>


ja tak czasami łącze js z php,
misiek172
nie powinno się tak tworzyć JS @vokiel już nie chodzi obłedy tylko o ogólnie przyjęte zasady smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.