Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z "nextSibling"
klaudio
post 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 smile.gif

<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>
Go to the top of the page
+Quote Post
erix
post 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!
Go to the top of the page
+Quote Post
kamil4u
post 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.


--------------------
Go to the top of the page
+Quote Post
klaudio
post 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 smile.gif 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"questionmark.gif

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
Go to the top of the page
+Quote Post
kamil4u
post 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){
child = document.getElementById('t2').getElementsByTagName('tr')[0];
}
, ale lepszym rozwiązaniem zrobienie tego tak( pseudokod ):
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


--------------------
Go to the top of the page
+Quote Post
klaudio
post 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 Lkingsmiley.png i jedno i drugie rozwiazanie jest takie jakiego szukam i potrzebuje.

Pozdrawiam !
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: 24.04.2024 - 07:53