2 回答
TA贡献1825条经验 获得超4个赞
您的脚本可以更改为如下所示:
function setColor(){
var elems = document.querySelectorAll("#myTable td:last-child");
for (i = 0; i < elems.length; i++) {
if (elems[i].innerText === "Passed") {
elems[i].style.backgroundColor = "green";
}
else if (elems[i].innerText === "Failed")
{
elems[i].style.backgroundColor = "red";
}
}
}
document.addEventListener("DOMContentLoaded", setColor);
<table id="myTable">
<tr>
<th style="width:50%;">SET</th>
<th style="width:50%;">TEST STATUS</th>
</tr>
<tr>
<td>Set</td>
<td>Passed</td>
</tr>
<tr>
<td>Set</td>
<td>Passed</td>
</tr>
</table>
但最好使用 CSS 类为文本着色:
if (elems[i].innerText === "Passed") {
elems[i].classList.add("passed");
}
else if (elems[i].innerText === "Failed")
{
elems[i].classList.add("failed");
}
在 style.css 中:
.passed {
background-color: green;
}
.failed {
background-color: red;
}
TA贡献1998条经验 获得超6个赞
我试着回答你的问题:
您的解决方案稳定且适用于所有浏览器。实现它的另一种方法可能是td使用特定的类呈现标签,并在不使用 javascript 的情况下为该类提供 css 规则。
就像是:
<style>
.failed{
background-color: red;
}
.passed{
background-color: green;
}
</style>
<table>
<tr><td class="failed">failed </td></tr>
<tr><td class="passed">passed </td></tr>
</table>
您的解决方案是稳定的。请记住,如果您的表有数千行,它可能会很慢。
当您使用时, elems[i].style.backgroundColor = "red";您将在位置中设置background-color元素的。里面有一个特定的. 另一种方法是根据测试的值(通过或失败)向 a 添加一个类。但是,我建议以下解决方案:elemsielems[i]tdtd
<table id="myTable">
<tr>
<th style="width:50%;">SET</th>
<th style="width:50%;">TEST STATUS</th>
</tr>
<tr>
<td>Set</td>
<td>Passed</td>
</tr>
<tr>
<td>Set</td>
<td>Passed</td>
</tr>
</table>
<style>
.failed{
background-color: red;
}
.passed{
background-color: green;
}
</style>
<script>
window.onload = setColor();
function setColor(){
var elems = document.getElementsByTagName("td");
for (i = 0; i < elems.length; i++) {
if (elems[i].innerText === "Passed") {
elems[i].classList.add("passed");
}else if (elems[i].innerText === "Failed"){
elems[i].classList.add("failed");
}
}
}
</script>
添加回答
举报