一种简单的方法,可以在不使用循环的情况下从表中获取所有表行

时间:2013-05-10 07:55:14

标签: javascript jquery

是否有一种简单的方法可以在不使用循环的情况下从表中获取所有表行。

我认为这会有效,但它只会警告第一行。

http://jsfiddle.net/THPWy/

    $(document).ready(function () {

        var O = $('#mainTable').find('tr');
        //var O = $('#mainTable tr');

        alert(O.html());

       //alerts     <th>Month</th><th>Savings</th> 

    });





<table id ="mainTable" border="1">
  <caption>Monthly savings</caption>
  <tr>
    <th>Month</th>
    <th>Savings</th>
  </tr>
  <tr>
    <td>January</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>February</td>
    <td>$50</td>
  </tr>
  <tr>
    <td>March</td>
    <td>$50</td>
  </tr>
  <tr>
    <td>a</td>
    <td>$50</td>
  </tr>
  <tr>
    <td>m</td>
    <td>$50</td>
  </tr>
  <tr>
    <td>j</td>
    <td>$50</td>
  </tr>
  <tr>
    <td>july</td>
    <td>$50</td>
  </tr>
  <tr>
    <td>aug</td>
    <td>$50</td>
  </tr>
  <tr>
    <td>sep</td>
    <td>$50</td>
  </tr>
</table>

4 个答案:

答案 0 :(得分:3)

无论你使用什么,都会遍历每一行来获取内部HTML。所以不,没有循环你就做不到。

这是另一种方法,如果你正在使用的话,将消息放在一行中,虽然它需要创建一个新数组,但它比使用循环的效率稍差。

jsFiddle

$(document).ready(function () {
    var rows = $('#mainTable tr');
    var message = $.map(rows, function (v) { 
        return v.innerHTML;
    }).join('\n');
    alert(message);
});

我建议只是在常规循环中进行。


仅供参考.html()仅警告第一行,因为这是最有用的it was designed to do

  

描述:获取匹配元素集中第一个元素的HTML内容。

答案 1 :(得分:1)

您的代码中的内容已经将所有表格行检索为arrayjQuery元素:

var trs = $('#mainTable').find('tr');

如果要打印每行的html内容,则必须使用循环:

trs.each(function (index, element) {
    alert($(this).html());
});

答案 2 :(得分:1)

怎么样:

// get all tr (excluding the caption)
var O = $('table#mainTable').children().slice(1); 

http://jsfiddle.net/THPWy/7/

答案 3 :(得分:0)

您可以使用

gt(), lt(),eq()

.gt(index) //将获得大于指定索引

的所有行

.lt(index) //将获得小于指定索引

的所有行

.eq(index) //将使所有行等于指定的索引

例如

$('#mainTable tr').eq(1)将提供第二行

但是当你想知道所有的表行数据时,请使用Konstantin D - Infragistics解决方案