Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z "nextSibling"
klaudio
post
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 (IMG:style_emoticons/default/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
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.
Go to the top of the page
+Quote Post
kamil4u
post
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
Post #4





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 19.01.2012

Ostrzeżenie: (0%)
-----


Dzieki "kamil4u" Dokladnie o to chodzilo (IMG:style_emoticons/default/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"(IMG:style_emoticons/default/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
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
Post #6





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 19.01.2012

Ostrzeżenie: (0%)
-----


Wielkie dzieki "kamil4u" jestes (IMG:style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 05:24