ugrás a tartalomhoz

Navigalas a DOM faban

zoliky · 2008. Május. 31. (Szo), 23.49
Adott egy tablazat:
  1. <tbody>  
  2.    <tr>  
  3.       <td colspan="4" class="container"><div class="show_hide">Second text</div></td>  
  4.    </tr>  
  5.    <tr>  
  6.       <td>forum1</td>  
  7.       <td>0</td>  
  8.       <td>0</td>  
  9.       <td>na</td>  
  10.    </tr>  
  11.    <tr>  
  12.       <td>forum2</td>  
  13.       <td>0</td>  
  14.       <td>0</td>  
  15.       <td>na</td>  
  16.    </tr>  
  17.   
  18.    <tr>  
  19.       <td colspan="4" class="container"><div class="show_hide">Second</div></td>  
  20.    </tr>  
  21.    <tr>  
  22.       <td>forum3</td>  
  23.       <td>0</td>  
  24.       <td>0</td>  
  25.       <td>na</td>  
  26.    </tr>  
  27. </tbody>  
A tablazat itt lathato: http://img61.imageshack.us/img61/7029/drufcw3.jpg

Ha rakatintok a "second text" szovegre, szeretnem kivalasztani az oszes sort (TR) amely a klikelt "container"-hez tartozik, kiveve magat a containert.

Pelda: Ha raklikelek a "03:" sorban levo "Second Text" szovegre, szeretnem kivalasztani az oszes TR-t az 05: es 16: sor kozott.

Szeretnek par otletet kerni, peldaul ti hogyan oldanatok meg a DOM navigalast. Nem kerek kodot, orulnek
par tanacsnak! Elore is koszonom!
 
1

Például így

kris7topher · 2008. Jún. 1. (V), 13.00
Tudom, nem kérsz kódot, de azért inkább leírom, hogy gondolom, úgy egyszerűbb, mint elmondani:
  1. function getRowsByHeadingNode(el) {  
  2. var curr = el.parentNode.parentNode;  
  3. var arr = new Array();  
  4. while (  
  5. (curr = curr.nextSibling) &&  
  6. (curr.firstChild | curr.firstChild.nextSibling).tagName !== "td"  
  7. ) arr.push(cur);  
  8. return arr;  
  9. }  
Mondjuk az igazsághoz hozzátartozik, nem nagyon teszteltem, de a lényeg:
1. megkeressük a kattintott secondText szülőjének a szülőjét (a tr-t), ez lesz az első vizsgált node
2. ha az éppen vizsgált node-ot követi másik node, az lesz a vizsgált node
3. ha a vizsgált node gyermeke, vagy a gyermekét követő node (a firstChild sok esetben egy textNode) nem tr, akkor kigyűjtjük a vizygált nodeot és kezdjük 2.-től
4. ha tr, akkor visszaadjuk a kigyűjtött nodeokat

Lehet hogy pont ilyen szintaxissal leírva (a | operátor nem biztos hogy ilyen formában oké) nem fut de a logika elég jól látható.