如何遍历HTML表列并使用JQuery将值输入到Javascript数组中

时间:2011-04-06 17:57:47

标签: javascript jquery ajax

假设我有一个包含10行的表格列,每行包含<td id="num">和一个文本值。

如何使用JQuery循环遍历列中的每一行并将旋转输入到Javascript数组中?

我认为以下代码会这样做,但它只获得第一个元素:

var numArray = [];
$("#num").each(function(n){
   numArray[n] = $(this).text();
});

有什么想法吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

您不能拥有多个具有相同ID的元素。这是不允许的,因为id用于标识DOM中的各个元素。我建议给他们所有相同的课程,这是允许的。

<td class="num">

然后这应该有效:

var numArray = [];
$(".num").each(function(n){
   numArray[n] = $(this).text();
});

答案 1 :(得分:3)

就像mcos所说的那样,通过id为所有表格选择都不起作用。页面上只能有一个具有给定ID的项目。

您可以为表格提供ID并执行以下操作:

var numArray = [];
// Assuming #my-table-id is your table and you want all the tds
$("#my-table-id td").each(function(n){
   numArray[n] = $(this).text();
});

或者,如果您不想要所有tds,请使用类来标识您想要的那些

var numArray = [];
// Assuming #my-table-id is your table and you added class="collect" 
// to the tds you want to collect
$("#my-table-id td.collect").each(function(n){
   numArray[n] = $(this).text();
});

还可以从别人的答案中窃取,地图功能还可以帮助您使代码更小

var numArray = $.map( $("#my-table-id td.collect"), function (td){
   return $(td).text();
})

答案 2 :(得分:1)

建议使用不要重复使用ID,但因为它会html ..它仍然可以工作..

jQuery ID(#)选择器只会选择第一个匹配...

您可以使用td[id^='num']td[id*='num']td[id$='num']代替

使用map ..

var numArray = $("td[id^='num']").map(function(){
return $(this).text();
}).get();

这将选择ID为num

的所有td

<强> See it here

答案 3 :(得分:1)

您可以使用.text(function(i, text){})

来实现此目的
var allText = [];
$("table td").text(function(i, t){
    allText.push(t);
});

Code example on jsfiddle

如果您需要定位特定单元格,则只需修改选择器即可。

$("table td#num").text(function(i, text){
    allText.push(text);
});

话虽如此,每个dom的id应该是唯一的,如果你可以使用类来调整html,那将是正确的方法。

 <td class="num">
   some text 1
 </td>

$("table td.num").text(function(i, text){
    allText.push(text);
});

Example