我在使用CSS设置表格方面存在问题。
所以我的HTML文件中有一个表:
<table class="altrowstable" id="alternatecolor">
<tr>
<th>Info Header 1</th><th>Info Header 2</th><th>Info Header 3</th>
</tr>
<tr>
<td>Text 1A</td><td>Text 1B</td><td>Text 1C</td>
</tr>
<tr>
<td>Text 2A</td><td>Text 2B</td><td>Text 2C</td>
</tr>
<tr>
<td>Text 3A</td><td>Text 3B</td><td>Text 3C</td>
</tr>
<tr>
<td>Text 4A</td><td>Text 4B</td><td>Text 4C</td>
</tr>
<tr>
<td>Text 5A</td><td>Text 5B</td><td>Text 5C</td>
</tr>
</table>
这是我的JavaScript文件:
function altRows(id){
if(document.getElementsByTagName){
var table = document.getElementById(id);
var rows = table.getElementsByTagName("tr");
for(i = 0; i < rows.length; i++){
if(i % 2 == 0){
rows[i].className = "evenrowcolor";
}else{
rows[i].className = "oddrowcolor";
}
}
}
}
window.onload=function(){
altRows('alternatecolor');
}
这是我的CSS文件:
table.altrowstable {
font-family: verdana,arial,sans-serif;
font-size:11px;
color:#333333;
border-width: 1px;
border-color: #a9c6c9;
border-collapse: collapse;
}
table.altrowstable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
table.altrowstable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
table.oddrowcolor{
background-color:#d4e3e5;
}
table.evenrowcolor{
background-color:#c3dde0;
}
问题在于它既不会改变颜色,也不会改变奇数行甚至是奇数。
我做错了什么?
感谢。
答案 0 :(得分:7)
我将为您提供一个CSS解决方案:
table.class_name tr:nth-child(odd) {
/* Styles */
}
table.class_name tr:nth-child(even) {
/* Styles */
}
这就是你所需要的,尽管它在IE 8及更早版本中不受支持。
对于表格标题,您只需使用其他选择器来覆盖
等背景样式table.altrowstable tr th {
background: #fff;
}
答案 1 :(得分:2)
我确实检查了你的代码并发现需要在css中进行一些修正以获得预期的解决方案。表和行类名之间应该有一个空格。
table .oddrowcolor{
background-color:#d4e3e5;
}
table .evenrowcolor{
background-color:#c3dde0;
}
答案 2 :(得分:2)
我喜欢提供不会修补或修改原始来源的解决方案。 您的 HTML 很好, JScript 很好(非常好)。很高兴看到你使用.classname这样就是交叉brwoser兼容。所以我所做的就是更改 CSS 的类
您的代码
table.oddrowcolor {
background-color:#d4e3e5;
}
table.evenrowcolor {
background-color:#c3dde0;
}
我的变化
tr.oddrowcolor {
background-color:#d4e3e5;
}
tr.evenrowcolor {
background-color:#c3dde0;
}
从您的代码到我的代码的总变化。 8个字符。简单不是吗?
答案 3 :(得分:0)
您的CSS中存在问题。您正在设置表的类,而应该是td。
您还需要修改以下js,因为样式可以应用于td
而不是tr
var rows = table.getElementsByTagName("td");
以下是CSS中的问题
table.oddrowcolor{
background-color:#d4e3e5;
}
table.evenrowcolor{
background-color:#c3dde0;
}
您应该使用此
table td.oddrowcolor{
background-color:#d4e3e5;
}
table td.evenrowcolor{
background-color:#c3dde0;
}
答案 4 :(得分:-2)
试试这个... see the Demo
tr:nth-child(even) {background: #CCC}
tr:nth-child(odd) {background: #FFF}