2013-07-14 3 views
-1

Как я могу прочитать все ячейки td из определенного столбца, если я знаю, какую строку читать.взбираться на дерево DOM

Позвольте мне проиллюстрировать это:

<tr> 
    <td><input type="checkbox" value="0"></td> 
    <td>1</td> 
    <td>John</td> 
    .... 
</tr> 

В какой-то момент я знаю, что мне нужно прочитать значение 0, и я хочу знать все другие td в этой строке.

Так что в некотором цикле у меня есть это:

selected[i][0] 

, который дает мне: <input type="checkbox" value="0"> var i происходит от 0

Как получить все элементы?

Я попытался с: $('tr').eq(i).find('td').eq(1).text()

и не дает мне правильные значения.

+0

Что значит «читать» ячейку 'td', что вы хотите получить? –

+0

Вы можете получить все ячейки в строке, если вы выбрали первую, используя siblings()? – sinisake

+0

Можем ли мы увидеть больше 'html', как мы узнаем, где будет следующий столбец? – iConnor

ответ

0

В какой-то момент я знаю, что Мне нужно прочитать значение 0, и я хочу знать все остальные td в этой строке.

Если я правильно понять вас, это должно дать вам ваши желаемые результаты, используя библиотеку JQuery:

$("td input[value='0']").parent().parent().children("td").each(function(){ 
    alert($(this).text()); //Replace alert with however you want to output your data 
}); 

Объяснения:

$("td input[value='0']") будет выбрать все <input /> тегов с атрибутом value установленное в 0, содержащееся в теге <td>

.parent() будет идти к родителю <td> тега

.parent() будет идти к родителю <tr> тега

.children("td") подберет все <td> тегов, содержащихся в соответствующем tr теге

.each(function(){...}) будет делать что-то с теми <td> теги

$(this).text() выберет текст <td>

+0

приятное объяснение –

2

Protip: Научитесь использовать удивительную консоль Firebug, чтобы получить прямой вывод отдельных элементов - вот путь к интуитивной коде Javascript :-)

$('tr').eq(i).children('td').children('input').val() 

может быть, но это ваша очередь.

enter image description here

+0

+1 для консоли firebug –

+0

Я знаком с Firebug ... но спасибо вам все равно :) –

0

если ваш HTML будет выглядеть следующим образом

<tr> 
    <td><input type="checkbox" value="0"></td> 
    <td>1</td> 
    <td>John</td> 
</tr> 

<tr> 
    <td><input type="checkbox" value="0"></td> 
    <td>2</td> 
    <td>Julie</td> 
</tr> 

, то вы бы просто сделать это

$('tr').each(function(index, element) { 
     var $element = $(element), 
      checkbox = $element.children(0)[0]; 
      id = $element.children(1); 
      name = $element.children(2); 
    }); 

Demo Link

1

Пожалуйста, смотрите, если следующий helps, http://jsfiddle.net/sLBgY/

<script> 
    function load(){ 
     var table = document.getElementById("mtable"); 
     for (var i = 0, row; row = table.rows[i]; i++) { 
      if(table.rows[i].cells[0].getElementsByClassName('valTd')[0].value==0){ 
       for (var j = 1, col; col = row.cells[j]; j++) { 
       alert(table.rows[i].cells[j].innerText); 
       } 
      } 
     } 
    } 
</script> 

<body onload="load()"> 
<table id="mtable">  
    <tr> 
     <td><input class='valTd' type="checkbox" value="0"></td> 
     <td>1</td> 
     <td>John</td> 
    </tr> 
    <tr> 
     <td><input class='valTd' type="checkbox" value="1"></td> 
     <td>1</td> 
     <td>John</td> 
    </tr> 
</table> 
</body> 
+0

@ user123_456 посмотрим, поможет ли это, чистый JS – user2580076

+1

Хорошо, просто вместо [innerText] (http://stackoverflow.com/ вопросы/1359469/innertext-works-in-ie-but-not-in-firefox) используют что-то более совместимое, а также лучше совместимы, чем '.getElementsByClassName' здесь' .getElementsByTagName' или '.querySelector': http: // jsfiddle.net/sLBgY/1/ – Stano

0

Найдет все ячейки в правильном ряду:

$(function() { 
    var found = false; 
    $('table tr').each(function() { 
     var cells = $(this).children('td'); 
     if (cells.eq(0).find('input').val() == 0) { // the value you're looking for 
      found = cells; 
     } 
    }); 
    if (found) { 
     alert(found.eq(0).html() + found.eq(1).html() + found.eq(2).html()); 
    } 
}); 

http://jsfiddle.net/7VmR9/16/

Смежные вопросы