假设我有一个包含10行的表格列,每行包含<td id="num">
和一个文本值。
如何使用JQuery循环遍历列中的每一行并将旋转输入到Javascript数组中?
我认为以下代码会这样做,但它只获得第一个元素:
var numArray = [];
$("#num").each(function(n){
numArray[n] = $(this).text();
});
有什么想法吗?
谢谢!
答案 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
<强> See it here 强>
答案 3 :(得分:1)
您可以使用.text(function(i, text){})
var allText = [];
$("table td").text(function(i, t){
allText.push(t);
});
如果您需要定位特定单元格,则只需修改选择器即可。
$("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);
});