使用innerHTML来检测角色的出现次数?

时间:2015-06-17 13:03:02

标签: javascript

我一直在使用此代码检测包含分号的表格中的元素,然后更改背景颜色:

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会突出显示绿色...这是可以通过修改现有代码来实现吗?

5 个答案:

答案 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;
    }
}