Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQ] Dynamiczna zmiana liczby
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
GalGavu
Witam.
Mam zapisaną tablicę z wartościami liczbowymi oraz zmienną:
  1. $dodawanie[0]=1;
  2. $dodawanie[1]=2;
  3. $liczba = 10;

Utworzyłem selektor:
  1. <p name="liczba" id="liczba"><?php echo $liczba; ?></p>

Mam także dwa checkboxy:
  1. <input id="box1" type="checkbox" />
  2. <input id="box2" type="checkbox" />

Teraz chcę aby w zależności od tego jaki checkbox zostanie zaznaczony zmieniała się wartość liczby.
Napisałem skrypt:
  1. <script>
  2. jQuery(document).ready(function() {
  3. //checkboxy
  4. <?php for($i=0; $i<count($dodawanie); $i++) { ?>
  5. jQuery('#box<?php echo $i;?>').click(
  6. function(){
  7. if(jQuery(this).is(":checked")){
  8. jQuery("#liczba").text('<?php echo $liczba+=$dodawanie[$i]; ?>');
  9. } else {
  10. jQuery("#liczba").text('<?php echo $liczba-=$dodawanie[$i]; ?>');
  11. }
  12. }
  13. );
  14. <?php } ?>
  15. });
  16. </script>


Niestety działa to połowicznie. Tzn. w przypadku gdy liczba powiedzmy wynosi 10 i zaznaczę pierwszy checkbox zmienia się wartość na 11 (dodawanie[0]=1)natomiast przy zaznaczeniu zaraz potem drugiego wartość zamiast zmieniać się na 13 (11+dodawanie[1]=13)zmienia się na 12.
Może ktoś pomóc bo dość długo już z tym walczę :/
essey
Jeżeli robisz <?php echo $liczba+=$dodawanie[$i]; ?> lub <?php echo $liczba-=$dodawanie[$i]; ?>, to zawsze pracujesz na wartości początkowej $liczba. Po dodaniu lub odjęciu nie nadpisujesz zmiennej $liczba. Js tego nie umożliwia.
Dlatego aby to działało, musisz każdorazowo pobrać wartość <p id="liczba">, i do tego dodaj, lub odejmij konkretną liczbę z tablicy $dodawanie.
GalGavu
Mógłbyś podpowiedzieć jak to zrobić smile.gif Byłbym bardzo wdzięczny.
essey
http://api.jquery.com/html/

  1. $('p#liczba').html();

To Ci pobierze środek znacznika <p>

A całość, może tak?
  1. [....]
  2. var liczba = parseInt( $('p#liczba').html() );
  3. if(jQuery(this).is(":checked")){
  4. var suma =liczba + parseInt( <?php echo $dodawanie[$i] ?> );
  5. jQuery("#liczba").text(suma);
  6. } else {
  7. var roznica =liczba - parseInt( <?php echo $dodawanie[$i] ?> );
  8. jQuery("#liczba").text(roznica);
  9. }
  10. [....]
GalGavu
Edit: dzięki wielkie smile.gif Dużo pomogło. nie wiedziałem nawet, że trzeba parseInt
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.