2015-10-01 2 views
-4

Скажем, у меня есть следующая таблица. Как бы я показал количество строк в таблице, используя простой javascript в абзаце <p id="rowscount"></p>.Как использовать javascript для подсчета количества строк в «плоской» таблице

Я новичок в javascript, поэтому было бы полезно, если бы вы могли включить любые комментарии относительно вызова функции, например.

<p id="rowscount"></p> 
 

 

 
<table> 
 

 
    <tr> 
 
    <td>One</td> 
 
    <td>Two</td> 
 
    </tr> 
 
    <tr> 
 
    <td>One</td> 
 
    <td>Two</td> 
 
    </tr> 
 

 
</table>

+1

_ «какие-либо комментарии относительно того, как вызвать функцию» _ переполнение стека на самом деле не место для покрытия таких основ - есть много обучающих веб-сайтов и/или книги (помните те!), которые покрывают эту землю. –

+0

По крайней мере, проверьте [codecademy] (http://codecademy.com) и дайте им курс JavaScript. Это бесплатно и научит вас основам. – phoenixlaef

+0

Это прекрасно подходит для подсчета видимых строк: 'document.getElementById ('rowscount'). InnerHTML = $ ('tr: visible'). Length-1'. Однако он не обновляется, не нужно ли вставлять onChange в этот оператор? –

ответ

1

Предположим, у вас есть таблица следующим образом:

<div id="rowsNumber"></div> 
<table id="myTable"> 

    <tr> 
    <td>One</td> 
    <td>Two</td> 
    </tr> 
    <tr> 
    <td>One</td> 
    <td>Two</td> 
    </tr> 

</table> 

В некоторых браузере строка данных таблиц идет завернута внутри TBODY тега следующим образом:

<div id="rowsNumber"></div> 
<table id="myTable"> 
    <tbody> 
     <tr> 
     <td>One</td> 
     <td>Two</td> 
     </tr> 
     <tr> 
     <td>One</td> 
     <td>Two</td> 
     </tr> 
    <tbody> 
    </table> 

так определить функцию так:

var getTableRowCount = function(tableNode){ 
    var tbody = tableNode.getElementsByTagName('tbody')[0]; 
    if(tbody){ 
    return tbody.getElementsByTagName('tr').length; 
    }else{ 
    return tableNode.getElementsByTagName('tr').length; 
    } 

} 

И вызовите функцию прохождения узла таблицы в качестве параметра например:

var count = getTableRowCount(document.getElementById('myTable')); 
document.getElementById('rowsNumber').innerHTML = 'Total rows = ' + count; 

Теперь, если вы хотите наблюдать слушатель так, что всякий раз, когда какие-либо tr из таблицы тя При наличии видимости вам нужно иметь MutationObserver, наблюдая за tr строк. Для того, чтобы добавить мутации наблюдателя можно написать код так:

var observer = new MutationObserver(function(mutations) { 
    var count = getTableRowCount(document.getElementById('myTable')); 
    document.getElementById('rowsNumber').innerHTML = 'Total rows = ' + count; 
    }); 

//find the target on which to observe 
var target = document.querySelector('table tr'); 

observer.observe(target, { 
    attributes: true 
}); 
+0

Это отлично работает, чтобы подсчитывать видимые строки: document.getElementById ('rowscount'). InnerHTML = $ ('tr: visible'). Length-1. Однако он не обновляется, не нужно ли вставлять onChange в этот оператор? –

+0

Проверьте обновленный ответ. Я добавил один MutationObserver, так что всякий раз, когда происходят какие-либо изменения, вы можете пересчитать значение no. рядов –

0

пожалуйста, попробуйте сильфона код

var table = document.getElementById('myTable'); 
 
document.getElementById("rowscount").innerHTML = table.childNodes.length;
<p id="rowscount"></p> 
 
<table id="myTable"> 
 

 
    <tr> 
 
    <td>One</td> 
 
    <td>Two</td> 
 
    </tr> 
 
    <tr> 
 
    <td>One</td> 
 
    <td>Two</td> 
 
    </tr> 
 

 
</table>

+0

Это прекрасно подходит для подсчета видимых строк: document.getElementById ('rowscount'). InnerHTML = $ ('tr: visible'). Length-1. Однако он не обновляется, не нужно ли вставлять onChange в этот оператор? –

+0

Да, вам нужно добавить код в onChange – Mitul

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