在正文中计算tr,它们具有一定的风格特征
Count tr in tbody, which have a certain style trait
我试图计算tbody
中具有white background-color
的td
的数量。我需要在计数后更新span
的文本。我的span
的类是.attendenceCount
$(".attendenceCount").closest('tbody')...
HTML
<table>
<thead>
<tr>
<th>Søløve 16:50-17:30 (3017) <span style="color:black;" class="attendenceCounter">tmp</span>
</th>
</tr>
</thead>
<tbody>
<tr style='background-color:white;'>
<td>Albert Hvistendahl Fabel</td>
</tr>
<tr style='background-color:green;'>
<td>Albert Hvistendahl Fabel</td>
</tr>
<tr style='background-color:white;'>
<td>Albert Hvistendahl Fabel</td>
</tr>
<tr style='background-color:green;'>
<td>Alma Valbjørn Bratved</td>
</tr>
<tr style='background-color:white;'>
<td>Albert Hvistendahl Fabel</td>
</tr>
</tbody>
</table>
这怎么可能呢?
现在您引用了HTML的新答案:
现在您已经引用了HTML,您将其显示为:
<tr style='background-color:white;'>
<td>Albert Hvistendahl Fabel</td>
</tr>
如果style
属性将真的看起来完全像这样,那么有一个快捷方式:
var tds = $(".attendenceCount").closest('tbody').find('tr[style="background-color:white;"] td');
但是,如果您更改style
属性(例如,在background-color:
和white
之间添加一个空格),这将停止工作。
主要建议必须更改HTML,这样您就可以更容易地查找内容,比如类。
原始答案:
没有捷径,你必须找到所有的td
元素,并在它们之间循环,检查它们是否有白色的background-color
(可能是通过filter
)。注意element.style.backgroundColor
(或$element.css("background-color")
)可能是十六进制或rgb表示法,因此必须考虑到这一点
类似的东西:
var whiteBackgroundTds =
$(".attendenceCount").closest('tbody').find('td').filter(onlyWhiteBG);
function onlyWhiteBG() {
var bgcolor = (this.style.backgroundColor || "").toLowerCase(),
m,
isWhite = false;
if (bgcolor.substring(0, 3) === "rgb") {
// Handle rgb or rgba (check this rex, it's off-the-cuff
m = /'s*rgb(?:a)?'('s*('d+)'s*,'s*('d+)'s*,'s*('d+)/;
if (m && m[1] === "255" && m[2] === "255" && m[3] === "255") {
isWhite = true;
}
}
else switch (bgcolor) {
case "white": // Not likely
case "#ffffff":
case "#fff":
isWhite = true;
}
return false; // Not white
}
但这几乎是伪代码。这个想法只是为你指明正确的方向。
请注意,这将仅与指定了background-color
的td
元素匹配。如果您需要找到通过样式指定的,请使用$(this).css("background-color")
而不是上面的this.style.backgroundColor
。
下面是我在jsfiddle上做的一个例子。它使用rgb作为颜色,因为我使用铬,你可能需要改变它(看看T.J.Crowder关于这一点的回答)。
function calc_attendence() {
var count = 0,
tds = $('tbody td');
$.each(tds, function (index, value) {
var color = $(value).css('background-color');
if (color == 'rgb(255, 255, 255)') { //works for me because I'm using chrome
count = count + 1
}
});
return count
};
相关文章:
- 获取/保留上一页's具有SmoothState的URL
- 从一组具有相同起始和结束的所有段落的段落中提取包含特定字符串的段落
- 将具有两个此类子字符串的字符串中的第一个子字符串生成与正则表达式匹配,正则表达式通常默认匹配最后一个子字符串
- 如何将具有多个标签的多个的所有数据获取到一个数组中
- 在JavaScript / jQuery中,是否有一种更短的方法可以编写在同一个测试变量上具有许多OR的“if”语句
- 控制不止一次跳水的风格's风格使用java脚本动态,使用类
- 在JavaScript中,从主线程和回调中调用函数是一种好的风格吗
- 一种在javascript上获得具有两个输入(字符串)的散列键的方法
- 在正文中计算tr,它们具有一定的风格特征
- 为什么js会从具有特定格式的Date对象中减去一天
- 如何使用angularJs/Javascript/Jquery获取表的最后一条记录并更新列值并插入到具有新记录的同一列
- 检查单词是否具有相同的字母 - 错过一项测试
- jQuery datepicker 解析具有一位数的年份
- ui路由器——具有一条路由'的URL与另一个具有$stateParams的状态共享同一级别
- 创建具有一个数组属性的Javascript对象
- 数组中具有一组值的循环迭代
- 如何仅查找集合中具有一组ID的最新文档
- AngularJS的设计模式与具有一组公共字段的2个服务一起使用
- 将已定义的函数赋值给具有一组参数的变量
- Dgrid 在具有一列的数据源上执行更新