使用基于文本的javascript设置元素的颜色
我有一个表,其中有一些值,我想根据这些值设置颜色。我所做的是:使用基于文本的javascript设置元素的颜色,javascript,css,events,onload,Javascript,Css,Events,Onload,我有一个表,其中有一些值,我想根据这些值设置颜色。我所做的是: window.onload=setColor(); 函数setColor(){ var elems=document.getElementsByTagName(“td”); 对于(i=0;i
window.onload=setColor();
函数setColor(){
var elems=document.getElementsByTagName(“td”);
对于(i=0;i
设置
测试状态
设置
通过
设置
通过
您的脚本可以更改为以下内容:
函数setColor(){
var elems=document.queryselectoral(“myTable td:last child”);
对于(i=0;i
设置
测试状态
设置
通过
设置
通过
我尝试回答您的问题:
- 您的解决方案是稳定的,可以在所有浏览器中使用。另一种实现方法是使用特定类呈现
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”
您正在设置元素内部元素的背景色,该元素位于i
位置。在elems[i]
内部有一个特定的td
。
另一种方法是根据测试值(通过或失败)将类添加到td
。
但是,我建议以下解决方案:
设置
测试状态
设置
通过
设置
通过
.失败{
背景色:红色;
}
.通过{
背景颜色:绿色;
}
window.onload=setColor();
函数setColor(){
var elems=document.getElementsByTagName(“td”);
对于(i=0;i
我建议在每个td上添加一个向上键事件处理程序,并在事件处理程序中监视td的内部文本,如果td通过或失败,则向其添加一个包含所需样式的类。相反,您可以根据插入的文本在td上设置一个类,因此,您不必通过js处理样式,也不必到处循环。执行此操作之前检查几步;)你期望有多少个细胞?几百?别担心。数万?可能会进行一些分块,即一次设置100行的样式,以便立即设置前几行的样式。如果您可以在后端执行,我会先执行。我猜querySelectorAll
会迭代整个元素并返回匹配的元素,因此,与我的想法相比,您搜索它们的想法更好,因为我将对所有元素进行一次迭代,以查看它们是否为td
,并再次查看它们是否具有innerText
值。谢谢您,Wolfetto,在这种情况下,我不希望出现大量行,但是因为我在学习,我想问为什么不要求一种解决问题的有效方法:D我还注意到,通过使用getElements
或使用QuerySelectorAll
我将不得不迭代所有元素,但在第二种方法中,我将有一个“较小”的第二次迭代,我认为这是更好的。但我想知道除了这些,还有其他方法收集所有元素吗?在我的情况下,按照上面一条评论中的建议由后端添加类目前是不可能的。