Problem z "nextSibling" |
Problem z "nextSibling" |
22.08.2012, 10:07:38
Post
#1
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 19.01.2012 Ostrzeżenie: (0%) |
Witam
Mam taki problem. Mianowicie mam tabelke, i jest w niej 5 wierszy, kazdy z wierszy ma ID i odpala sie taka funkcja onclick="tabelka(this);" po kliknieciu na wiersz. I teraz chodzi mi o to ze np. jak klikne w wiersz o ID dwa to funkcja ma przejsc na noda za nim, czyli na noda o ID trzy i wypisac w alercie "trzy". Kod ponizej wypisuje mi undefined. Czy ktos ma jakis pomysl jak t zrobic. Z gory dziekuje za pomoc i pozdrawiam <table border='0' cellspacing='0' cellpadding='0'> <tr id="jeden" onclick="tabelka(this);"><td>1</td></tr> <tr id="dwa" onclick="tabelka(this);"><td>2</td></tr> <tr id="trzy" onclick="tabelka(this);"><td>3</td></tr> <tr id="cztery" onclick="tabelka(this);"><td>4</td></tr> <tr id="piec" onclick="tabelka(this);"><td>5</td></tr> </table> <script> var child; function tabelka (e){ child = e; child = child.nextSibling; alert(child.id); } </script> |
|
|
22.08.2012, 10:16:00
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Puść to gdzieś na żywo, bo kontekst jest istotny.
Poza tym, pamiętaj, że nextSibling może też łapać zawartość, która znajduje się między tagami. -------------------- ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
22.08.2012, 11:15:18
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
Cytat Poza tym, pamiętaj, że nextSibling może też łapać zawartość, która znajduje się między tagami. Dokładnie o to chodzi w tym problemie. Rozwiązanie: http://stackoverflow.com/questions/574904/...sing-javascript z kodem: Kod var div = document.getElementById('foo2'); var nextSibling = div.nextSibling; while(nextSibling && nextSibling.nodeType != 1) { nextSibling = nextSibling.nextSibling } Jeśli czegoś nie rozumiesz w tym kodzie to się zapytaj. -------------------- |
|
|
22.08.2012, 12:41:35
Post
#4
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 19.01.2012 Ostrzeżenie: (0%) |
Dzieki "kamil4u" Dokladnie o to chodzilo Wszystko dziala idealnie.
A teraz mam jeszcze inne pytanie w tej samej tematyce. Zalozmy ze mam takie cos jak ponizej, i mam dwie tabele w jednym divie i tak samo chce klikajac na TR o ID dwa zeby przeszedl na nastepnya TR i pokazal mi alert "trzy" itd. ale w tym wypadku jak klikne na TR o ID piec to jest null jako ze dajej juz nie ma. Czy jest mozliwosc zrobienia tak ze jak klikne na TR o ID piec to wyswietli mi alert "szesc" Z gory dzieki jeszcze raz za odpowiedz i pozdrawiam. <div id="container"> <table id="t1" border='0' cellspacing='0' cellpadding='0'> <tr id="jeden" onclick="tabelka(this);"><td>1</td><td>1</td></tr> <tr id="dwa" onclick="tabelka(this);"><td>2</td><td>2</td></tr> <tr id="trzy" onclick="tabelka(this);"><td>3</td><td>3</td></tr> <tr id="cztery" onclick="tabelka(this);"><td>4</td><td>4</td></tr> <tr id="piec" onclick="tabelka(this);"><td>5</td><td>5</td></tr> </table> <table id="t2" border='0' cellspacing='0' cellpadding='0'> <tr id="szesc" onclick="tabelka(this);"><td>6</td><td>6</td></tr> <tr id="siedem" onclick="tabelka(this);"><td>7</td><td>7</td></tr> <tr id="osiem" onclick="tabelka(this);"><td>8</td><td>8</td></tr> <tr id="dziewiec" onclick="tabelka(this);"><td>9</td><td>9</td></tr> <tr id="dziesiec" onclick="tabelka(this);"><td>10</td><td>10</td></tr> </table> </div> <script> var child; function tabelka (e){ child = e; child = child.nextSibling; while(child && child.nodeType != 1){ child = child.nextSibling; }; if(child == null){ alert("wiecej TR nie ma"); } alert(child.id); } </script> Ten post edytował klaudio 22.08.2012, 13:22:27 |
|
|
22.08.2012, 14:28:25
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
W skrócie mógłbyś zrobić tak:
Kod if(child == null){ , ale lepszym rozwiązaniem zrobienie tego tak( pseudokod ):child = document.getElementById('t2').getElementsByTagName('tr')[0]; } Kod var elements = id("container").pobierzElementy("tr"); //tablica elementów -> getElementsByTagName pętla_po( elements,i ){ //for elements[i].zdarzenie_click = funkcja(){ // dodanie zdarzenia click alert( elements[i+1].id ); } } Przypisanie zdarzenia w pętli musisz zrobić na wzór: http://forum.php.pl/index.php?s=&showt...st&p=872817 -------------------- |
|
|
22.08.2012, 15:11:38
Post
#6
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 19.01.2012 Ostrzeżenie: (0%) |
Wielkie dzieki "kamil4u" jestes i jedno i drugie rozwiazanie jest takie jakiego szukam i potrzebuje.
Pozdrawiam ! |
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 07:53 |