如何根据xml节点的值分配类?

时间:2018-04-17 18:20:04

标签: javascript html css xml html-table

我正在使用下面的for循环从“x-ml”结果集中检索数据,并且我从结果中构建了一个t体。我想要做的是根据节点值为几行分配一个类。例如:

- 如果报告百分比> 90%然后分配类“绿色”,

- 如果报告百分比> 70%和不到90%然后分配类“黄色”,

- 如果报告百分比< 70%然后分配类“红色”。

我想我可以在构建t体时分析这个,并为每个t d或单元分别分配类,但我不知道如何去做。

最终我想基于它们的值以不同方式对我的三个列进行条件格式化。

非常感谢任何想法或提示。

for (i = 0; i < x.length; i++) {
    tbody += "<tr><td>" + x[i].getElementsByTagName("Site")[0].childNodes[0].nodeValue + 
    "</td><td>" + x[i].getElementsByTagName("TotalUnits")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("PercentReporting")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("PercentNotReporting")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("PercentBypassed")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("NumberLogins")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("NumberAlarms")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("TotalEnergySavings")[0].childNodes[0].nodeValue +
    "</td></tr>";
}

2 个答案:

答案 0 :(得分:0)

只需计算要添加的类并将其添加到行中:

for (i = 0; i < x.length; i++) {
var percentReporting = x[i].getElementsByTagName("PercentReporting")[0].childNodes[0].nodeValue;
    var class = "";
    if(percentReporting > 90)
        class = "green";
    else if(percentReporting > 70)
        class = "yellow";
    else
        class = "red";

    tbody += "<tr><td>" + x[i].getElementsByTagName("Site")[0].childNodes[0].nodeValue + 
    "</td><td class ='" + class +"'>" + x[i].getElementsByTagName("TotalUnits")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("PercentReporting")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("PercentNotReporting")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("PercentBypassed")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("NumberLogins")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("NumberAlarms")[0].childNodes[0].nodeValue +
    "</td><td>" + x[i].getElementsByTagName("TotalEnergySavings")[0].childNodes[0].nodeValue +
    "</td></tr>";
}

答案 1 :(得分:0)

在你的循环中,只需为你的类创建一个变量,并使用一些if条件来设置类。

for (i = 0; i < x.length; i++) {
        var statusClass = 'good', //default value
            percentReporting = parseFloat(x[i].getElementsByTagName("PercentReporting")[0].childNodes[0].nodeValue);

        if (percentReporting < 70)
            statusClass = 'bad';
        else if (percentReporting < 90 && percentReporting > 70)
            statusClass = 'warning';

        tbody += "<tr><td>" + x[i].getElementsByTagName("Site")[0].childNodes[0].nodeValue +
            "</td><td>" + x[i].getElementsByTagName("TotalUnits")[0].childNodes[0].nodeValue +
            "</td><td class='" + statusClass + "'>" + percentReporting +
            "</td><td>" + x[i].getElementsByTagName("PercentNotReporting")[0].childNodes[0].nodeValue +
            "</td><td>" + x[i].getElementsByTagName("PercentBypassed")[0].childNodes[0].nodeValue +
            "</td><td>" + x[i].getElementsByTagName("NumberLogins")[0].childNodes[0].nodeValue +
            "</td><td>" + x[i].getElementsByTagName("NumberAlarms")[0].childNodes[0].nodeValue +
            "</td><td>" + x[i].getElementsByTagName("TotalEnergySavings")[0].childNodes[0].nodeValue +
            "</td></tr>";
    }