ugrás a tartalomhoz

Navigalas a DOM faban

zoliky · 2008. Május. 31. (Szo), 23.49
Adott egy tablazat:
<tbody>
   <tr>
      <td colspan="4" class="container"><div class="show_hide">Second text</div></td>
   </tr>
   <tr>
      <td>forum1</td>
      <td>0</td>
      <td>0</td>
      <td>na</td>
   </tr>
   <tr>
      <td>forum2</td>
      <td>0</td>
      <td>0</td>
      <td>na</td>
   </tr>

   <tr>
      <td colspan="4" class="container"><div class="show_hide">Second</div></td>
   </tr>
   <tr>
      <td>forum3</td>
      <td>0</td>
      <td>0</td>
      <td>na</td>
   </tr>
</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:

function getRowsByHeadingNode(el) {
var curr = el.parentNode.parentNode;
var arr = new Array();
while (
(curr = curr.nextSibling) &&
(curr.firstChild | curr.firstChild.nextSibling).tagName !== "td"
) arr.push(cur);
return arr;
}
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ó.