2010-09-06 23 views
0

我想要创建一个解析我的HTML页面的JavaScript函数,通过它的ID获取表格,然后为每个<tr>添加一个类属性,就好像这行是第一行,我会添加: 类=“LINE-1”到<tr> 但如果该行是第二个,我会添加class =“2号线”到<tr> 怎么办请JavaScript DOM:将属性添加到<tr>

+1

你有没有听说过的jQuery?预计在接下来的20分钟内将会有10次左右。 – jcolebrand 2010-09-06 07:11:54

+0

不要让他为此包含使用JQuery。 – 2010-09-06 08:12:32

回答

6

如果我正确地理解你,你想交替类名来获得某种斑马风格吧?

var table = document.getElementById('yourTableId'); 
var rows = table.rows; 
for(var i = 0, l = rows.length;i < l; i++) { 
    rows[i].className = 'class' + ((i%2) + 1); 
} 

请参阅HTML DOM Table Object

+0

Yahoo!就是这样,这是DOM? – 2010-09-06 07:30:19

+0

@taichimaro:是的,它是DOM。 – 2010-09-06 07:42:51

+0

伟大的,gud工作..真正的程序员 – 2010-09-06 08:03:51

0

它在jQuery的非常简单...如下: -

$(document).ready(function() { 
    //for table row 
    $("tr:even").addClass("AlternateBG1"); 
    $("tr:odd").addClass("AlternateBG2"); 
}) 

但JQUERY ...

+0

没有要求提供jQuery解决方案。 – James 2010-09-06 08:35:41

-1

使用jQuery是非常简单的,做这样的事情:

var i = 1; 
$("#myTable tr").each(function() { 
    $(this).addClass("line"+i); 
    i++; 
}); 

哪里#myTable是你的表id和$(本)内的各功能将是循环中的当前元素。

+0

这是一个使用javascript工作的义务,不得使用任何API。 – 2010-09-06 07:22:31

+0

我已经投票回应了你的答案,因为“只是用jQuery”的态度,每个人似乎都坚持拥有。显然没有什么个人特征,但现在它已经非常令人讨厌了,而且在如此简单的场景中,这是非常不必要的。 – Rob 2010-09-06 07:31:34

+0

另外,这甚至没有利用每个'tr'索引作为第一个参数传递给'each'回调的事实。 – James 2010-09-06 08:32:41

0

这是不容易的jQuery:

oTBody=document.getElementById("tBodyId"); 
//for (key in oTbody.childNodes) { 
for (var nPos=0, nLength = oTbody.childNodes.length; nPos<nLegth; nPos++)} 
    oRow = oTbody.childNodes[nPos]; 
    if (oRow && oRow.tagName && oRow.tagName.toLowerCase() == "tr") { 
     oRow.className = (bNormalRow? sClass1:sClass2); 
     bNormalRow = !bNormalRow; 
    } 
} 
+1

不要使用'for(i in foo)'循环为类似数组的结构(例如NodeLists)。它很慢(非常慢),并可能导致非相关项目被循环(如果'NodeList'的原型链中的任何原型已被操纵)。 – James 2010-09-06 08:31:38

+0

对。选定的答案有正确的方法。 – pkario 2010-09-06 12:06:40

0
var table = document.getElementById("yourTableId"); 
for(var i in table.rows){ 
    table.rows[i].className = 'line'+(i+1).toString(); 
} 
+1

不要对类似数组的结构(例如NodeLists)使用'for(i in foo)'循环。它很慢(非常慢),并可能导致非相关项目被循环(如果'NodeList'的原型链中的任何原型已被操纵)。 – James 2010-09-06 08:34:33