获取表中的tds值

时间:2013-12-06 22:49:40

标签: javascript jquery

好的,你可以在我的小提琴中看到我试图操纵左表,以便最后它看起来像右边的表:http://jsfiddle.net/SULK3/2/

要做到这一点,我首先尝试通过它们获取td s循环的值并查找日期并更改我得到的数据上的rowspans:所以我开始使用普通表和此代码:

var values = [];
   var table = $(this).closest("table");
   table.find("tr").each(function() {
      values.push($(this).find("td:first").html());
   });

$('#values').text(values); 

但不知怎的,它不会工作,行的值不会在带有id值的div中被忽略!为什么? (如果你有想法如何解决我的'大'问题,请在这里发布!)谢谢

2 个答案:

答案 0 :(得分:2)

在这一行

var table = $(this).closest("table");

什么是this?在小提琴中,它是窗口,没有最近的表,因为nearest()表示最接近的父元素?

因为只有一个表,所以是两个表,只需将其更改为

var table = $('table:first')

似乎有效:

FIDDLE

答案 1 :(得分:1)

您可能会尝试使用您正在构建的阵列来完成此任务。而且只是想知道为什么价值没有出现在#values中。

我不确定所以我开始制定一个解决方案..我回来看你已经标记了一个接受的答案,这个答案一定是你想要的。

我不希望或希望您将此标记为已接受的答案,但我很乐意尝试找到解决方案,所以在这里:

var dateCount = 0;
var addtoTr = 0;
var table = $("table:first");
var date = table.find('tr:first').find('td:first').html();

   table.find("tr").each(function(index) {
       if(date === $(this).find("td:first").html() || date === ''){
        dateCount++;
       }
       else{
          table.find('tr').eq(addtoTr).prepend('<td rowspan='+dateCount+'>'+date+'</td>');
          dateCount = 1;
          date = $(this).find("td:first").html();
          addtoTr = index;
       } 
       $(this).find("td:first").remove();
   });
   table.find('tr').eq(addtoTr).prepend('<td rowspan='+dateCount+'>'+date+'</td>');

http://jsfiddle.net/SULK3/6/

这只是一种方法。我确信还有很多其他更好的方法。