Lynky: childNotes.length ?

Hi,

kann mir jemand erklaeren, warum mir das folgende Script 3 Kindknoten von joblist zaehlt? Fuer mich ist da nur einer (, der wiederrum welche hat, ...). length zaehlt aber nicht etwa die ebenen, oder?

  
<script language="javascript">  
  
  function CountChilds() {  
    alert(document.getElementById('joblist').childNodes.length);  
    }  
  
</script>  
<table id="joblisttbl" cellpadding="3" cellspacing="0" onClick="CountChilds();">  
  <tbody id="joblist">  
  <tr>  
    <td class="lblueheadBotBord" width="120">  
   from - to  
    </td>  
    <td class="lblueheadBotBord" width="140">  
   company  
    </td>  
    <td class="lblueheadBotBord" width="120">  
   position  
    </td>  
    <td class="lblueheadBotBord" width="100">  
   actions  
    </td>  
  </tr>  
  </tbody>  
</table>  

Besten Dank im voraus,

Lynky

  1. Liebe(r) Lynky,

    kann mir jemand erklaeren, warum mir das folgende Script 3 Kindknoten von joblist zaehlt? Fuer mich ist da nur einer (, der wiederrum welche hat, ...). length zaehlt aber nicht etwa die ebenen, oder?

    Du hast Recht, length bezieht sich nur auf die erste Ebene. Deine Beobachtung kann ich im FF nachvollziehen (der hat innerhalb von <table> erst ein #Text, dann <tbody> und dann wieder ein #Text; siehe DOM-Inspector), im IE und Opera dagegen nicht.

    Übrigens: Der korrekte Plural des englischen Wortes "child" lautet "children". Daher sollte Deine Funktion CountChildren() heißen...

    Deine Kindersucher-Funktion muss also darauf prüfen, ob es sich bei einer childNode[x] um einen Textknoten, oder um einen Objektknoten handelt, denn sonst kommst Du im FF nicht weiter!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hi,

      Deine Beobachtung kann ich im FF nachvollziehen (der hat innerhalb von <table> erst ein #Text, dann <tbody> und dann wieder ein #Text;

      Aha, das heisst also, dass auch Leerzeichen als Text und damit als childREN ;) interpretiert werden. Du hast Recht, ich habe diese gerade weggelassen und damit wird auch im Firefox "1" gezaehlt.

      Danke Dir vielmals!

      Lynky

  2. Hallo Lynky,

    in einigen Browsern zählen die Umbrüche zwischen TRs und TDs auch als Knoten. Daher benutze ich in Tabellen lieber getElementsByTagName:

    document.getElementById("TabID").getElementsByTagName("tr")[z].getElementsByTagName("td")[s]

    greift auf die Spalte s in der Zeile z zu.

    Gruß, Jürgen