我想使用Jquery在下表中找到II,III,I,D,F和CP的数量。首先,我正在考虑使用正则表达式,但它对我不起作用。我只是一个初学者,这是我到目前为止所尝试过的。
表:
<table>
<tr>
<th>Sl</th>
<th>Name</th>
<th>status</th>
<th>position</th>
</tr>
<?php while($row= $dbh->fetch(PDO::FETCH_ASSOC)){
<tr>
<td><?php echo $row['id'];?></td>
<td><?php echo $row['nm'];?></td>
<td class="st"><?php echo $row['st'];?></td>//Regular AND private
<td class="ps"><?php echo $row['ps'];?></td>//output-CP, I, II, III, D, F
</tr>
<?php } ?>
</table>
Jquery的:
var ps = $('.ps').text();//output is IIIIIIDIIIICPIIIIIIDIICPIIFIIII
var compt = ps.match(/CP+/g);
$(".inbody").text(compt.length);//This give me the number of CP i.e. 2
我想要这种格式的ps值(IIIIIIDIIIICPIIIIIIDIICPIIFIIII)
:
II, I,III,D,III,I,CP,III,I,I,I,D,II,CP,II,F,I,III
所以我可以像下面一样单独计算它们(或者请建议更好的方式):
var arr = ps.split(",");
var cp = $.inArray("CP",arr).length; //will output 2
var Ist = $.inArray("I",arr).length;//will output 6
var Snd = $.inArray("II",arr).length;//will output 3
var Trd = $.inArray("III",arr).length;//will output 4
var Dnt = $.inArray("D",arr).length;//will output 2
var Fld = $.inArray("F",arr).length;//will output 1
所以我的问题是:如何使用jquery从我的表中获取此II, I,III,D,III,I,CP,III,I,I,I,D,II,CP,II,F,I,III
格式的数据。我想分别找到常规和私人状态下的CP位置数。请帮帮我。
答案 0 :(得分:1)
您可以使用jQuery.map
:
var texts = $.map($('.ps'), function(el) { return $(el).text(); });
console.log(texts);
输出:["II", "I", "III", "D", "III", "CP"]
因此,如果您希望拥有基于前一行.st
行的数组:
var texts_private = $.map($('td.st:contains("Private") + td'), function (el) {
return $(el).text();
});
var texts_regular = $.map($('td.st:contains("Regular") + td'), function (el) {
return $(el).text();
});
console.log(texts_private, texts_regular);
它将抓取.st
行,查看:contains()
内部的文字,然后查看下一行。
该功能将为您提供两个阵列:
["I", "D", "CP"] ["II", "III", "III"]