2011-08-25 85 views
0

我有以下的HTML代码,如何计算在JavaScript中具有相同值的HTML属性?

<table> 
<tr> 
<td>content</td> 
<td>content</td> 
</tr> 
<tr> 
<td colspan="2">one</td> 
</tr> 
<tr> 
<td>content</td> 
<td>content</td> 
</tr> 
<tr> 
<td colspan="2">two</td> 
</tr> 
<tr> 
<td>content</td> 
<td>content</td> 
</tr> 
<tr> 
<td colspan="2">three</td> 
</tr> 
</table> 

我真正想要的是计数的“合并单元格”,并从这些表把这些内容用JavaScript而已,没有jQuery和mootool请。谢谢。

我已经得到了这个答案,我们可以优化为更短的代码或只是简单的代码?

var tds = document.getElementsByTagName('td'); 
var colspanCount = 0; 
var valuecount = 0; 
for(i=0; i<tds.length; i++) { 
    myvalue = (tds[i].hasAttribute('colspan')); 
    if (myvalue == true) { 
    valuecount += 1; 
    } 

} 
document.write('my value is ' + valuecount); 
+0

一个问题:为什么?我问这个是因为我觉得有更好的方式去做你想做的事情。 – Mrchief

回答

1

我想使用jQuery是最好的,但这样的事情应该工作:

var tablecols = document.getElementsByTagName("td"); 
for(var i in tablecols) { 
    if (tablecols[i].getAttribute('colspan') != undefined) { 
     alert(tablecols[i].innerHTML); 
    } 
} 

请注意,这是未经测试。

+0

感谢范,它的工作原理。 –

1

那么你或许应该遍历通过执行类似document.getElementsByTagName(“TD”),然后使用每个这些对象的getAttribute方法,看看它是否返回您合并单元格的值标签..

伪代码:

tds=document.getElementsByTagName("td") 
for i fom 0 to tds.length 
if tds[i].getAttribute("colspan") is defined 
//do smthing 

希望帮助..

+0

工作。谢谢 –

-1

我自己,我只是使用jQuery。

你可以低价出售和对待它像字符串和使用.split('colspan="2"')然后长度为1将是你的答案。

0
var tds = document.getElementsByTagName('td'); 

var colspanCount = 0; 
for(i=0; i<tds.length; i++) { 
    colspanCount += tds[i].hasAttribute('colspan') ? parseInt(tds[i].getAttribute('colspan')) : 0; 
} 

document.write('Count: ' + colspanCount); 

测试工作:

http://jsfiddle.net/kmfvu/

+0

它显示了属性值的全部增值,所以结果是6而不是3,它不计算colspan。你可以请看看。谢谢 –

相关问题