2010-10-01 2 views
6

Mit Javascript, wie kann ich auf ein bestimmtes Kind einer Reihe zugreifen? Javascript (nicht jQuery bitte).Javascript, wie kann ich auf ein bestimmtes Kind einer Zeile zugreifen?

z.B .: zweiten <TD> von <TR> wo ID = id33322010100167

<table> 
<tr id="id33322010100167"> 
<td>20101001</td> 
<td>918</td> 
<td>919</td> 
<td>67</td> 
<td>CAR PROBLEM</td> 
</tr> 
<tr id="id33322010100169"> 
<td>20102001</td> 
<td>913</td> 
<td>914</td> 
<td>62</td> 
<td>LUNCHTIME</td> 
</tr> 
<table> 
+1

Können Sie jQuery verwenden? –

+2

Sie haben hier ein Problem, Ihre beiden 'tr' -Elemente haben den gleichen 'id'-Wert! – romaintaz

+0

keine jquery. muss an blackberry arbeiten, jquery tut das (noch) nicht. Auch behoben Elemente – robert

Antwort

5
var index = 1; // second element 
var child = document.getElementById('id33322010100167').childNodes[index] 
+0

Haben Sie das versucht? Dies gibt die erste '' zurück, nicht die zweite, weil der erste Kindknoten des '' ein Textknoten ist, der Leerzeichen enthält. –

+0

Dann ändern Sie einfach den Index auf 2. Die Methode ist immer noch gut. – RaYell

+0

Nein, ist es nicht. 'document.getElementById ('id33322010100167'). childNodes [2]' gibt einen weiteren Whitespace-Knoten. Was passiert, wenn das OP dann alle Zeilenumbrüche in seinem Quellcode entfernt? Das behält die Reihenfolge der '' Elemente bei, während die 'childNodes'-Auflistung vollständig geändert wird. –

0

Verwendung der DOM Sie den Tisch bekommen und dann über die untergeordneten Elemente durchlaufen, während Zählung zu halten.

Natürlich sollen Element-IDs eindeutig sein, damit document.getElementById('id') funktioniert.

0

Verwendung jQuery:

first = $('#id33322010100167 td:first'); // gives you the first td of the tr with id id33322010100167 
last = $('#id33322010100167 td:last'); // gives you the last td of the tr with id id33322010100167 

können Sie als nächstes verwenden() durch die Elemente iterieren

first.next(); 
+0

"Not jquery bitte" – gbmhunter

1

Zuverlässigstes ist die cells Sammlung, die im Gegensatz zu childNodes in Nicht-IE-Browsern ignoriert Whitespace-Textknoten zwischen Zellen:

var td = document.getElementById("id33322010100167").cells[1]; 
3

Vielleicht können Sie versuchen, diese:

var tRow = document.getElementById("tableName").getElementsByTagName("tr"); 

for(var i = 0; i < tRow.length; i++){ 
    if(tRow[i].id == "name of your id"){ 
     //do something 
    } 
} 
+0

'document.all' ist heutzutage keine gute Sache. –

+0

Ich habe es ausgezogen – Shaoz

+0

Das andere Problem ist, dass es keine IDs in den '' Elemente in dem Beispiel gibt und das OP möglicherweise nicht möchten, sie hinzuzufügen. –

Verwandte Themen