如何使用Javascript在表中找到空tr

时间:2013-08-08 08:26:16

标签: javascript

我想在表中找到Empty tr,有什么方法可以找到它吗? 找到空行后,我想在其中插入一些数据。

5 个答案:

答案 0 :(得分:3)

假设你有这个HTML:

  <table id=tbl>
    <tr><td>A</td><td>B</td></tr>
    <tr><td>A</td><td>B</td></tr>
    <tr><td></td><td></td></tr> <!-- this line is empty -->
    <tr><td>A</td><td>B</td></tr>
  </table>

然后你可以像这样填空线:

var rows = document.getElementById('tbl').rows;
for (var i=0; i<rows.length; i++) {
   var txt = rows[i].textContent || rows[i].innerText;
   if (txt.trim()==="") rows[i].innerHTML="<td>Something</td>";
}

Demonstration

这使用:

  • 表格的rows属性
  • textContent(或IE的innerText)获取不带标记的内容

由于这也使用了IE8中没有的trim功能,您可能需要添加this shim

if(!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g,'');
  };
}

答案 1 :(得分:1)

可能有更好的方法,这就是我发生的事情。

$('tr').each(function() {
  if($(this).find('td').length == 0) {
   // empty tr
   // id of tr is available through this.id
  }
});

答案 2 :(得分:0)

也许像这样$('table tr:empty').html('....')

答案 3 :(得分:0)

var tables = document.getElementsByTagName('table');
var table = tables[0];
var trs = table.getElementsByTagName('tr');
for (var i = 0; i < trs.length; i++) {
    if (trs[i].innerHTML === '') {
        console.log('EMPTY', trs[i]);
    } else {
        console.log('NOT EMPTY', trs[i]);
    }
}

答案 4 :(得分:0)

我认为这并不容易。你可以看到this link HTML:

<table id="table" style="border: 1px solid green;"><tbody>
    <tr id="empty"></tr>
    <tr id="withText"><font style="color: red;">text</font></tr>
    <tr id="withEmptyTd"><td></td></tr>
    <tr id="withTdWithText"><td>text</td></tr>
</tbody></table>
<div id="output"></div>  

Javascript:

var output = document.getElementById('output');
var table = document.getElementById('table');
var trs = table.querySelectorAll('tr');
var tr, id, text, tds, j, td, tdText;
for (var i = 0; i < trs.length; i++) {
    tr = trs[i];
    id = tr.id;
    output.innerHTML += "Getting tr[" + id + "]<br />";
    text = tr.innerHTML;
    output.innerHTML += "tr[" + id + "].innerHTML = \"" + text + "\" it's length = " + text.length + "<br />";
    tds = tr.querySelectorAll('td');
    output.innerHTML += "tr[" + id + "] have " + tds.length + " tds<br />";
    for (j = 0; j < tds.length; j++) {
        td = tds[j];
        tdText = td.innerHTML;
        output.innerHTML += "tr[" + id + "] -> td[" + j + "].innerHTML = \"" + tdText + "\" its length = " + tdText.length + "<br />";
    }
}  

输出将是:

Getting tr[empty]
tr[empty].innerHTML = "" it's length = 0
tr[empty] have 0 tds
Getting tr[withText]
tr[withText].innerHTML = "" it's length = 0
tr[withText] have 0 tds
Getting tr[withEmptyTd]
tr[withEmptyTd].innerHTML = "" it's length = 9
tr[withEmptyTd] have 1 tds
tr[withEmptyTd] -> td[0].innerHTML = "" its length = 0
Getting tr[withTdWithText]
tr[withTdWithText].innerHTML = "text" it's length = 13
tr[withTdWithText] have 1 tds
tr[withTdWithText] -> td[0].innerHTML = "text" its length = 4  

导致表格中的任何标签或文字在tr中但未在td 中显示 text in tr