我一直在使用此代码检测包含分号的表格中的元素,然后更改背景颜色:
var x = document.getElementsByTagName("TD");
var i=0;
for (i=0;i<x.length;i++) {
if (x[i].className=="ms-vb-title") {
if (x[i].innerHTML.indexOf(";") != -1) {
x[i].style.cssText="background-color:#ccc !important;";
}
}
}
但是我现在想根据分号的出现次数来改变颜色,所以例如小于2会突出显示红色,2-4之间会突出显示橙色而超过4会突出显示绿色...这是可以通过修改现有代码来实现吗?
答案 0 :(得分:5)
您可以使用.split
生成一个字符数组,其长度为要分割的字符数量(在您的情况下为;
)。
var a = ';;;;testtest;test;test;te;;st;;test;test;;';
var b = a.split(';');
var numOfSemicolons = b.length;
答案 1 :(得分:4)
您可以使用match
了解出现的次数:
('str1;str2;str3;str4'.match(/;/g) || []).length;
|| []
当没有任何元素时,它会为长度提供一个空数组(&#39;因为match
返回null
)
答案 2 :(得分:2)
试试这个
var x = document.getElementsByTagName("TD");
var i = 0;
for (i = 0; i < x.length; i++) {
if (x[i].className == "ms-vb-title") {
var count = (x[i].innerHTML.match(/;/g) || []).length;
if(count < 2) {
x[i].style.cssText = "background-color:red !important;";
}
else if(count < 4) {
x[i].style.cssText = "background-color:orange !important;";
}
else if(count >= 4) {
x[i].style.cssText = "background-color:green !important;";
}
else
}
}
答案 3 :(得分:0)
步骤1:找出半结肠的出现次数 步骤2:根据计数添加颜色,比如小于2,然后是红色,依此类推。
更简单的方法,但成本最低的方法 迭代内容并获取计数,然后再次迭代以添加颜色
答案 4 :(得分:0)
假设elems是一个包含你的TD的数组,你可以通过getElementeBy<x>
或$("td .<class>")
之类的东西获得,这可能会做你想要完成的事情:
for(var i = 0; i < elems.length; i++){
count = elems[i].innerHTML.split(';') - 1 ;
switch(count){
case 0:
case 1:
case 2:
elems[i].style.cssText="background-color:#C00 !important;";
break;
case 3:
case 4:
elems[i].style.cssText="background-color:#F60 !important;";
break;
default:
elems[i].style.cssText="background-color:#0C0 !important;";
break;
}
}