Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js]Dodanie konkretnego elementu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Dominator
Cześć
Mam sobie tabelkę:

  1. <table>
  2. <thead>
  3. <tr>
  4. ...
  5. </tr>
  6. </thead>
  7. <tbody>
  8. <tr>
  9. <td><img src="..." /></td>
  10. <td> nick1</td>
  11. <td>0</td>
  12. <td><a href='#' id='tak'>Dodaj</a> <a href='#' id='nie'>Usuń</a></td>
  13. </tr>
  14. <tr>
  15. <td><img src="..." /></td>
  16. <td> nick2</td>
  17. <td>0</td>
  18. <td><a href='#' id='tak'>Dodaj</a> <a href='#' id='nie'>Usuń</a></td>
  19. </tr>
  20.  


W komórce td jest wartość zero. Jak napisać takie cudo, że po kliknięciu na Dodaj w konkretnej komórce jej wartość zwiększy się o 1? Kombinowałem różnymi sposobami, ale zawsze głupoty mi wychodziły.
nospor
Pobierasz zawartosc komorki
Parsujesz na inta - parseInt()
Dodajesz 1
Zapisujesz spowrotem do komorki
Dominator
Cytat(nospor @ 18.09.2014, 17:24:59 ) *
Pobierasz zawartosc komorki
Parsujesz na inta - parseInt()
Dodajesz 1
Zapisujesz spowrotem do komorki


Właśnie mam problem z pobraniem zawartości komórki... o to głównie mi chodzi.
nospor
Z pierwszego posta nic takiego nie wynikalo, bys mial wlasnie z tym problem. Precyzuj wiec swoje pytania...

jQuery:

Kod
<td><a href='#' id='tak' onclick="Add(this);return false;">Dodaj</a> <a href='#' id='nie'>Usuń</a></td>

Kod
function Add(obj) {
alert(jQuery(obj).parent().prev().html()); //to ci zwroci zawartosc komorki

//skoro z resztą nie masz problemu, mozesz dopisac sam
}
Dominator
Coś jest nie tak, bo konsola mówi, że "Uncaught ReferenceError: Add is not defined", a kod JS jest na stronie.
nospor
Widac zle go dodales, skoro go nie widzi.
Dales go chociaz w sekcji js czy na zywce wstawiles w htmlu?
Dominator
Wstawiłem go do pliku js
Całość wygląda tak:

  1. $(document).ready(function()
  2. {
  3. window.onload = function()
  4. {
  5. function Add(obj)
  6. {
  7. alert(jQuery(obj).parent().prev().html());
  8. }
  9. $("a").click(function() {
  10. var nick = ($(this).attr("id"));
  11. var akcja = $(this).html();
  12. if(akcja == "Dodaj")
  13. {
  14. //$.ajax({ url: 'http://localhost/strona/edytuj.php?akcja=dodaj&nick=' + nick });
  15. }
  16. else if(akcja == "Usuń")
  17. {
  18. //$.ajax({ url: 'http://localhost/strona/edytuj.php?akcja=usun&nick=' + nick });
  19. }
  20. //$("table").delegate("tr", "click", function() { });
  21.  
  22. });
  23. };
  24. });
nospor
Deklaracje funkcji dodaje sie poza blokami {}. W przeciwnym wypadku będą one funkcjami lokalnymi dla tych blokow wiec nic dziwnego ze ci nie widzi jej gdzie indziej
Dominator
Okej, faktycznie zwraca mi zawartość komórki, aczkolwiek napotkałem kolejny problem. Otóż skrypt nie chce dodawać wartości - dlaczego? Miejsce, w którym skrypt ma zwiększać wartość o 1 musi być w bloku if.

  1. function Add(obj)
  2. {
  3. tekst = $(obj).parent().prev().html();
  4. }
  5.  
  6. $(document).ready(function()
  7. {
  8. window.onload = function()
  9. {
  10. $("a").click(function() {
  11. var nick = ($(this).attr("id"));
  12. var akcja = $(this).html();
  13. if(akcja == "Dodaj")
  14. {
  15. $.ajax({ url: 'http://localhost/strona/edytuj.php?akcja=dodaj&nick=' + nick });
  16. tekst += 1; //zwiększanie wartości
  17. }
  18. else if(akcja == "Usuń")
  19. {
  20. $.ajax({ url: 'http://localhost/strona/edytuj.php?akcja=usun&nick=' + nick });
  21. }
  22. //$("table").delegate("tr", "click", function() { });
  23.  
  24. });
  25. };
  26. });
nospor
alert(tekst);
tekst += 1; //zwiększanie wartości
alert(tekst);

Naucz sie samemu ANALIZOWAC tak BANALNE problemy


Nie bede juz wspominal nawet o fakcie, ze wyraźnie jednym z krokow bylo zrzutowanie tekstu na liczbe. No ale po co czytac co sie do niego pisze. Lepiej walic posta za postem bez zadnego namyslu...

Cytat
Miejsce, w którym skrypt ma zwiększać wartość o 1 musi być w bloku if.
Nie, nie musi, gdyz funkcje Add wstawilem ci recznie do konkretnego A.
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.