Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Zastapienie nextElementSibling
Forum PHP.pl > Forum > Przedszkole
Star
Czesc

mam taka tabelke i taki kod JS:

  1. <tr>
  2. <th>Y</th>
  3. <th>Name</th>
  4. <th>Age</th>
  5. <th>City</th>
  6. </tr>
  7. <tr>
  8. <td><input type="submit" value="Check" class="check" onclick="checkCity(this);"></td>
  9. <td>A</td>
  10. <td>B</td>
  11. <td>C</td>
  12. </tr>
  13. <tr>
  14. <td><input type="submit" value="Check" class="check" onclick="checkCity(this);"></td>
  15. <td>D</td>
  16. <td>E</td>
  17. <td>F</td>
  18. </tr>
  19. <tr>
  20. <td><input type="submit" value="Check" class="check" onclick="checkCity(this);"></td>
  21. <td>G</td>
  22. <td>H</td>
  23. <td>I</td>
  24. </tr>
  25.  
  26. function checkCity(element)
  27. {
  28. var parent = element.parentNode;
  29. var city = parent.nextElementSibling.nextElementSibling.nextElementSibling.innerHTML;
  30.  
  31. alert(city);
  32. }


no i wszystko dobrze sie alertuje, tak jak trzeba.Tylko chcialbym wiedziec czy daloby rade jakos to skrocic ? no bo zalozny ,ze kolumna City miala by przed soba wiecej kolumn, wtedy musialbym wrzucac kolejne funkcje nextElementSibling,a to wygladaloby kiepsko. Tak wiec czy jest jakies lepsze rozwiazanie, aby sie do tej kolumny City dobrac ? Zaznacze ze bez JQUERY, to istotne.

Pozdrawiam
trueblue
getElementsByTagName i ostatni z kolekcji, albo querySelector
by_ikar
Kod
function checkCity(element) {
    alert(element.parentElement.parentElement.lastElementChild.innerHTML);
}
Star
dzieki ,pomoglo smile.gif

a tak z czystej ciekawosci, gdyby element City nie byl ostatni na liscie tylko np 3 od konca, a wszystkich elementow byloby np 30(teoretycznie), to da sei to jakos wyciagnac bez uzycia getElementsByTagName albo querySelector ?
Comandeer
Tak, XPath tongue.gif
by_ikar
Cytat(Star @ 27.08.2016, 16:25:33 ) *
dzieki ,pomoglo smile.gif

a tak z czystej ciekawosci, gdyby element City nie byl ostatni na liscie tylko np 3 od konca, a wszystkich elementow byloby np 30(teoretycznie), to da sei to jakos wyciagnac bez uzycia getElementsByTagName albo querySelector ?


Kod
function checkCity(element) {
    var parent = element.parentElement.parentElement;

    alert(parent.childNodes[parent.childNodes.length - 3].innerHTML);
}
Comandeer
No nie bardzo, bo childNodes łapią też węzły tekstowe, więc przy takim kodzie pewnie byśmy wyciągnęli tym sposobem jakąś spację wink.gif

Jak już to elem.children[ index ] (children zawiera tylko elementowe dzieci).
by_ikar
Racja, o tym że łapane jest wszystko w sumie zapomniałem, chyba za mało tego typu konstrukcji uzywałem..
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.