Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][HTML]Zmiana wartośći input
Mgorka
post 12.09.2011, 08:43:31
Post #1





Grupa: Zarejestrowani
Postów: 209
Pomógł: 3
Dołączył: 6.04.2010
Skąd: Słupca

Ostrzeżenie: (0%)
-----


Siema pisze program w js który będzie dodawać wartości po wybraniu ich.
Może teraz jaśniej mam kilka inputów typu checkbox (są one wczytywane z bazy danych ale teraz to ominąłem dla ułatwienia):
  1. <tr><td style="width: 400px;">Zanacz kolorem 5zł</td><td>TAK <input type="checkbox" class="price" name="prce[]" value="5" onchange="price(this);"/></td></tr>
  2. <tr><td style="width: 400px;">Zawsze na początku strony 10zł</td><td>TAK <input type="checkbox" class="price" name="prce[]" value="10" onchange="price(this);"/></td></tr>
  3. <input type="hidden" id="price" name="price" value="0">

Po zaznaczeniu opcji w formularzu uruchamaiany jest skrypt js:
  1. function price(){
  2. var pri = document.getElementById('price').value;
  3. if(document.getElementByClassName('price').checked){
  4. var ad = document.getElementByClassName('price').value;
  5. var suma = pri + ad;
  6. document.getElementById('price').value = suma;
  7. }
  8. }
  9.  

ale funkcja nie chce zmienić wartości co robię nie tak. Użyłem this aby odwołąć się konkretnie do tego input
Go to the top of the page
+Quote Post
wewior
post 12.09.2011, 09:00:25
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 8
Dołączył: 24.09.2003

Ostrzeżenie: (10%)
X----


Masz dwa elementy o klasie price wiec to:
  1. document.getElementByClassName('price')

pewnie będzie tablicą.
Poza tym powinieneś wg mnie przekazywać obiekt this jako parametr funkcji np:
  1. function price( oElement ){

Wtedy oElement będzie konkretnym przekazanym checkboxem.


--------------------
- - -
PHP, HTML, JS, Quick.Cms v6.4, Quick.Cart v6.7, Simlery
- - -
Go to the top of the page
+Quote Post
mortus
post 12.09.2011, 09:11:49
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Dla Twojego HTML-a funkcja price() powinna wyglądać tak:
[JAVASCRIPT] pobierz, plaintext
  1. function price(element) {
  2. if(element.checked) {
  3. document.getElementById("price").value = document.getElementById("price") + element.value;
  4. } else {
  5. document.getElementById("price").value = document.getElementById("price") - element.value;
  6. }
  7. }
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
Mgorka
post 12.09.2011, 09:30:52
Post #4





Grupa: Zarejestrowani
Postów: 209
Pomógł: 3
Dołączył: 6.04.2010
Skąd: Słupca

Ostrzeżenie: (0%)
-----


nadal niedział tak jak by nie była wywoływana ;/
Go to the top of the page
+Quote Post
mortus
post 12.09.2011, 10:00:33
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Nie działa, bo zgubiłem value po drodze. Poza tym trzeba rzutować łańcuch znaków na liczbę, bo + działa jak konkatenacja.
[JAVASCRIPT] pobierz, plaintext
  1. function price(element) {
  2. if(element.checked) {
  3. document.getElementById("price").value = Number(document.getElementById("price").value) + Number(element.value);
  4. } else {
  5. document.getElementById("price").value = Number(document.getElementById("price").value) - Number(element.value);
  6. }
  7. }
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.05.2025 - 07:36