Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][HTML]Zmiana wartośći input
Mgorka
post
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
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.
Go to the top of the page
+Quote Post
mortus
post
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
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
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 10:44