在下面的代码中,我通过使用javascript动态地将类“even”分配给它们,为所有偶数行应用不同的背景颜色。我正在调用body标签的alternamte()函数onload。
首先,我使用getElementById获取表对象,我的代码运行正常。但是,我想将这个样式应用于我页面上的所有表,所以我需要使用按标签名称的get元素。
一旦我将chane变为getElementByTagName,我的代码就停止了工作,我一直试图找出问题的根源一段时间没有成功。我想知道是否有人可以帮助我理解为什么我的代码在我对getElementByTagName进行更改后停止了工作?
<script type="text/javascript">
function alternate(){
var table = document.getElementsByTagName("table");
var rows = table.getElementsByTagName("tr");
for(i = 0; i < rows.length; i++){
//change style of even rows
//(odd integer values, since we're counting from zero)
if(i % 2 == 0){
rows[i].className = "even";
}
}
}
</script>
答案 0 :(得分:3)
它是getElementsByTagName()
,复数。它返回一个节点列表。
var table = document.getElementsByTagName("table")[0];
(如果您确信页面上有<table>
。)
如果您想对所有 <table>
元素执行操作,则必须执行以下操作:
var tables = document.getElementsByTagName("table");
for (var ti = 0; ti < tables.length; ++ti) {
var rows = tables[ti].getElementsByTagName("tr");
for(var i = 0; i < rows.length; i++){
//change style of even rows
//(odd integer values, since we're counting from zero)
if(i % 2 == 0){
rows[i].className = "even";
}
}
}
答案 1 :(得分:1)
使用getElementsByTagName
代替getElementByTagName
(getElementsByTagName返回多个节点元素)
var table = document.getElementsByTagName("table")[0], trs, rl;
vat tl= table.length;
while(tl--){
trs = tables[tl].getElementsByTagName("tr");
rl = trs.length;
while(rl--){
if(rl % 2 == 0){
trs[rl].className = "even";
}
}
}
答案 2 :(得分:-2)
getElementsByTagName()返回与选择器匹配的数组。因此尝试
var table = getElementsByTagName('table')[indexnumber];