如何在循环内获得计数值增量

时间:2014-02-19 12:03:51

标签: javascript html

http://jsfiddle.net/KKH9a/16/

使用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);
        }
    }
}

4 个答案:

答案 0 :(得分:3)

  1. table1未定义。您需要使用document.getElementById来获取对表元素的引用。
  2. 在第2行,您指定j < table1.rows[i].cells[j].innerHTML。这没有任何意义,应该更改为j < table1.rows[i].cells.length
  3. 您需要将count变量完全移出循环,否则它将始终等于1.
  4. 将您的代码更改为:

    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);
            }
        }
    }
    

    Working JSFiddle demo

答案 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);
});

更新演示:http://jsfiddle.net/KKH9a/27/