许多呈现表格数据的站点都使用交替的背景颜色来提高该数据的可读性。当我开发一个网站时,我也意识到我也想这样做。问题?在我的情况下,该表不是由服务器端应用程序或脚本生成的,您可以在网络上找到许多示例。
明显的解决方案是每第二行进行硬编码,以确保其具有不同的背景颜色。但是我希望表具有动态性,以便可以在表的中间添加新行,而不会更改随后的行的背景颜色属性。
我的解决方案使用JavaScript,因为CSS3并不是真正的可行选择。如今,浏览器仍在努力支持CSS1和CSS2。即使不建议使用HTML表用于网页布局,它们仍然非常适合表现出表格数据。在本教程中,我将根据同一想法介绍三个示例。我仅在Windows平台上测试了IE6,Firefox 1.0,Mozilla 1.7.3和Opera 7.54中的解决方案。入门
现在,我们需要检查浏览器是否相当新,并且具有必要的JavaScript功能(即W3C DOM支持)。以下行执行此检查,取消Netscape 4的资格以及该一代人的其他检查资格。这样的浏览器将不会尝试为桌子着色。
<table > <br> <tr><td>0 - some txt</td></tr> <br> <tr><td>1 - some txt</td></tr> <br> <tr><td>2 - some txt</td></tr> <br> <tr><td>3 - some txt</td></tr> <br> <tr><td>4 - some txt</td></tr> <br> </table>
还要注意,所有这些示例共有的是此代码:
if(document.getElementById)>示例1
这个第一个示例使用样式元素,我们通过该元素为背景颜色定义了两个类别:
var table = document.getElementById(id); <br> var rows = table.getElementsByTagName("tr"); <br> for(i = 0; i < rows.length; i++){ <br> //manipulate rows <br> ...
在这里,Modulo操作员%为我们提供了剩余的部门。
<style> <br> .odd{background-color: white;} <br> .even{background-color: gray;} <br> </style>
应从车身标签的on load事件中调用上述功能: 结果可能看起来像这样: >让我们继续下一个示例 - 有些冒险。我不需要使用两种交替的颜色,而是想使用几种。让我们添加一个容纳所有这些颜色的阵列。 >由于有限数量的颜色在HTML中具有定义的名称,因此我们将切换到十六进制值。所得颜色将由三个值组成:红色,绿色和蓝色。当所有三种颜色最大打开时:#ffffff时,都会实现白色。相反的黑色为#000000。 >行操作代码将仅包含一行,但是我们将无需复制和粘贴相同的代码,而是进行一个单独的函数调用: >在上面的片段中可以看到,可以为行设置CSS类名称或HTML标签的特定属性: 示例2的结果可能如下所示: >示例3
>
当您需要将数字转换为十进制(在这种情况下)时,
>使用CSS和JavaScript,在不必从服务器应用程序中重新生成HTML页面,添加或增加代码的可读性相当容易。正如我们在这里看到的,也可以在静态HTML页面上添加。要查看这些示例中的这些示例,请下载包含代码的HTML文件。 更改表中特定行的背景颜色,您可以使用JavaScript方法GetElementById或QuerySelector选择该行,然后更改其样式属性。 Here’s an example: var row = document.querySelectorAll(“。myrows”); >我可以根据其内容更改行的背景颜色吗?您可以使用InnerHTML属性获取行的内容,然后使用IF语句根据内容更改背景颜色。以下是一个示例: > >我可以将行的背景颜色更改为原始颜色吗?在更改它之前,您可以将原始颜色存储在变量中,然后使用此变量更改颜色。以下是一个示例: > >当我选择它时如何更改行的背景颜色? var row = document.getElementById(“ myrow”);<table > <br>
<tr><td>0 - some txt</td></tr> <br>
<tr><td>1 - some txt</td></tr> <br>
<tr><td>2 - some txt</td></tr> <br>
<tr><td>3 - some txt</td></tr> <br>
<tr><td>4 - some txt</td></tr> <br>
</table>
>示例2
if(document.getElementById)
var table = document.getElementById(id); <br>
var rows = table.getElementsByTagName("tr"); <br>
for(i = 0; i < rows.length; i++){ <br>
//manipulate rows <br>
...
>在这里,我还添加了一个函数,例如1称为Doalternate。这使得更容易在我们可以交替进行表的行颜色的不同方法之间切换。
<style> <br>
.odd{background-color: white;} <br>
.even{background-color: gray;} <br>
</style>
首先,我们需要设置一些变量:
function alternate(id){ <br>
if(document.getElementsByTagName){ <br>
var table = document.getElementById(id); <br>
var rows = table.getElementsByTagName("tr"); <br>
for(i = 0; i < rows.length; i++){ <br>
//manipulate rows <br>
if(i % 2 == 0){ <br>
rows[i].className = "even"; <br>
}else{ <br>
rows[i].className = "odd"; <br>
} <br>
} <br>
} <br>
}
由于计算了颜色,我们需要确保我们不会超出范围,有效值从0到255。颜色参数不会分离为RGB值,因此,如果我们速度低于16,则需要加路,否则,该值将是非法的。如果我们的表格非常长或一个大步骤值,则梯度将朝另一个方向转向。在此功能中,蓝色零件是固定的,而另外两个则进行了修改。<html> <br>
... <br>
<body onload="alternate('thetable')"> <br>
<table > <br>
<tr><td>...</td></tr> <br>
</table> <br>
...
<table > <br>
<tr><td>0 - some txt</td></tr> <br>
<tr><td>1 - some txt</td></tr> <br>
<tr><td>2 - some txt</td></tr> <br>
<tr><td>3 - some txt</td></tr> <br>
<tr><td>4 - some txt</td></tr> <br>
</table>
结论
经常询问的问题(常见问题解答)关于JavaScript中的背景颜色的更改
>
>如何使用JavaScript在表中使用特定行的背景颜色?
document.getElementById("myRow").style.backgroundColor = "red";
// or
document.querySelector("#myRow").style.backgroundColor = "red";
In this example, “myRow” is the id of the row you want to change.您可以用任何有效的颜色名称或颜色代码替换“红色”。>我可以一次更改多行的背景颜色吗?您可以使用QuerySelectorall方法选择要更改的所有行,然后使用循环更改每行的背景颜色。以下是一个示例:
for(var i = 0; i
>当我单击它时如何更改行的背景颜色?
>
在单击时更改行的背景颜色,可以在JavaScript中使用onClick事件。以下是一个示例: document.getElementById(“ myrow”)。您可以用任何有效的颜色名称或颜色代码替换“绿色”。
>>当我悬停在它上时,我该如何更改行的背景颜色?
在悬停在悬停的情况下,可以更改行的背景颜色,可以使用:悬停伪级级别的CSS中。以下是一个示例:
#myrow:hover {
背景色:pink;在此示例中,“ myrow”是您想要更改的行的ID。您可以用任何有效的颜色名称或颜色代码替换“粉红色”。
var row = document.getElementById(“ myrow”);
var OriginalColor = row.style.style.style.backgroundColor;
>我如何更改每隔几秒钟的一行的背景颜色?
以每隔几秒钟更改行的背景颜色,您可以在JavaScript中使用setInterval函数。这是一个示例:setInterval(function(function(){
row.style.style.backgroundcolor = getRandomColor(getRandomColor()返回随机颜色。数字2000是毫秒的间隔(2000毫秒= 2秒)。
>我可以根据条件更改行的背景颜色吗?
是的,您可以根据条件使用JavaScript更改行的背景颜色。您可以使用if语句检查条件,然后如果条件为真,然后更改背景颜色。 Here’s an example:
var row = document.getElementById("myRow");
if (someCondition) {
row.style.backgroundColor = "orange";In this example, “myRow” is the id of the row you want to change, and someCondition is the condition you want to check.您可以用任何有效的颜色名称或颜色代码替换“橙色”。
>
在选择行时,可以更改行的背景颜色,可以在JavaScript中使用OnSelect事件。但是,此事件通常不用于表行,因为它通常用于文本输入字段。一种更常见的方法是在您单击行时更改背景颜色,如问题3所述。>我可以在特定列中更改行的背景颜色吗?您可以使用CellIndex属性获取列的索引,然后如果索引与特定列匹配,则更改行的背景颜色。以下是一个示例:
if(row.cells [0] .cellindex == precsecteclumn){
row.style.style.backgroundcolor =“ teal”;特定列的索引。您可以用任何有效的颜色名称或颜色代码替换“蓝绿色”。
以上是使用JavaScript Alter Table Row背景颜色的详细内容。更多信息请关注PHP中文网其他相关文章!