使用table1.rows[0].cells[1].innerHTML
=>使用控制台尝试"Numbers"
甚至试过这段代码table1.rows[0].cells[1].innerHTML!=null
=> true
但如果我尝试以下代码:
HTML:
<table id="table1">
<tr>
<td>Value</td>
<td></td>
</tr>
<tr>
<td>Value</td>
<td>Value</td>
</tr>
<table>
使用Javascript:
for (var i = 0; i < table1.rows.length; i++) {
for (var j = 0; j < table1.rows[i].cells[j].innerHTML; j++) {
if (table1.rows[i].cells[j].innerHTML != null) {
var count = 0;
count = count + 1;
alert(count);
}
}
}
答案 0 :(得分:3)
table1
未定义。您需要使用document.getElementById
来获取对表元素的引用。j < table1.rows[i].cells[j].innerHTML
。这没有任何意义,应该更改为j < table1.rows[i].cells.length
。count
变量完全移出循环,否则它将始终等于1. 将您的代码更改为:
var table1 = document.getElementById('table1');
var count=0;
for(var i=0;i<table1.rows.length;i++)
{
for(var j=0;j<table1.rows[i].cells.length;j++)
{
if(table1.rows[i].cells[j].innerHTML!=null)
{
count++;
alert(count);
}
}
}
答案 1 :(得分:0)
了解Javascript如何与HTML DOM交互。
目前您的代码引用“table1”,但这与ID为“table1”的HTML元素无关。
介绍性的Javascript教程将解释如何将DOM元素转换为变量。为了简化操作,您可以使用JQuery或类似的东西。
一旦你过去了,你就可以开始查看for循环逻辑中的错误(其他答案已经解决了)。
答案 2 :(得分:0)
首先,您不应该使用innerHTML来检查节点中是否存在某些内容。只需计算一下孩子的数量:
if (table1.rows[i].cells[j].childNodes.length > 0) {
其次,如果你在循环中声明count
,它将在每次迭代时重置。
Thirldy,我不明白你要对j < table1.rows[i].cells[j].innerHTML
做些什么。 innerHTML
是一个字符串,而不是一个数字。你应该在它上面使用parseInt。
答案 3 :(得分:0)
在文档准备好后使用JQuery计算单元格数
$(document).ready(function() {
var count = 0;
$('#table1 td').each(function() {
if($(this).html() != "") {
count++;
}
});
alert(count);
});