如何使用javascript计算动态创建的行上的行数

时间:2016-01-13 14:28:00

标签: javascript jquery html row counter

我正在尝试建立一个可以创建新行并删除它们的系统,我希望有一个计数器来计算每一行的行号。

" Num"我希望显示行号,但我无法弄清楚如何这样做。

编辑

  • 我发现了一个jQuery片段似乎算上了我的第一行,但不是新创建的那些。
  • 使用jQuery代码段更新了小提琴
  • 在顶部
  • 中使用代码段更新了JS代码

请看我的小提琴:https://jsfiddle.net/pr05dw6p/14/

HTML code:

<div class="row">
    <div class="large-8 large-offset-2 columns">
        <h2>This is the table</h2>
            <form method="post">
                <table id="myTable" class="hover large-12 columns">
                  <thead>
                    <tr>
                      <th>Num.</th>
                      <th>Name</th>
                      <th>Height</th>
                      <th>Width</th>
                    </tr>
                  </thead>
                  <tbody id="bannerTable">
                    <tr>
                      <td><p></p></td>                      
                      <td><input type="text" name="name"></td>
                      <td><input type="number" name="height"></td>
                      <td><input type="number" name="width"></td>
                    </tr>
                  </tbody>
                </table>
            </form>
    </div>    
</div>         

<div class="row">
    <div class="large-4 large-offset-2 columns">
        <button class="button expanded" onclick="newRow()">Add new row</button>
    </div>
    <div class=" large-4 columns">
        <button class="alert button expanded" onclick="deleteRow()">Delete latest row</button>
    </div>
</div>

JS代码:

//CREATE NEW BANNER - TABLE ROW COUNTER
$('#bannerTable tr').each(function(idx){
    $(this).children().first().html(idx + 1);
});


//CREATE NEW BANNER - CREATE ROW
function newRow() {
    var table = document.getElementById("bannerTable");
    var row = table.insertRow(1);

    var cell1 = row.insertCell(0);    
    var element1 = document.createElement('p');
        cell1.appendChild(element1); 

    var cell2 = row.insertCell(1);
    var element2 = document.createElement('input');
        element2.type="text", name="name";
        cell2.appendChild(element2);   

    var cell3 = row.insertCell(2);
    var element3 = document.createElement('input');
        element3.type="number", name="height";
        cell3.appendChild(element3);   

    var cell4 = row.insertCell(3);
    var element4 = document.createElement('input');
        element4.type="number", name="width";
        cell4.appendChild(element4);   
}

//CREATE NEW BANNER - DELETE ROW
function deleteRow(){
    var table = document.getElementById("bannerTable");
    var rowCount = table.rows.length;

    if(rowCount>1){            
        table.deleteRow(-1);
    }
}

4 个答案:

答案 0 :(得分:1)

计算可以使用的行数:

var row_count = $('#bannerTable tr').length;

你可以在newRow()和deleteRow()的末尾调用它来追加结果,例如一个div。

答案 1 :(得分:0)

您可以使用

获取其他答案中所述的表格行的长度(计数)
table.getElementsByTagName("tr").length

这将获得计数,您可以通过调用p

将其放入生成的element1.innerHTML = table.getElementsByTagName("tr").length标记的html中

我还建议您在页面初始化时运行newRow()函数而不使用预设tr。插入行时,行的计数也会有所帮助,以便它始终在先前插入的行之后插入一行,使Num.列保持良好和干净。

查看此更新的小提琴:https://jsfiddle.net/pr05dw6p/19/

答案 2 :(得分:0)

我们需要做以下更改:

  • 在P标签的HTML中添加1作为默认值
  • 在Javascript代码中,我们需要计算表的TR并将其值放在table.insertRow(row_count);之后我们需要增加值并将其添加到新的<P>标记。

                     <tbody id="bannerTable">
                        <tr>
                          <td><p>1</p></td>                      
                          <td><input type="text" name="name"></td>
                          <td><input type="number" name="height"></td>
                          <td><input type="number" name="width"></td>
                        </tr>
                      </tbody>
    

Javascript代码

//CREATE NEW BANNER - CREATE ROW
function newRow() {
    var table = document.getElementById("bannerTable");
    var row_count = document.getElementById("bannerTable").rows.length;    
    var row = table.insertRow(row_count);
    row_count = row_count+1;

    var cell1 = row.insertCell(0);     
    var element1 = document.createElement('p');
            element1.innerHTML = row_count;
        cell1.appendChild(element1); 

    var cell2 = row.insertCell(1);
    var element2 = document.createElement('input');
        element2.type="text", name="name";
        cell2.appendChild(element2);   

    var cell3 = row.insertCell(2);
    var element3 = document.createElement('input');
        element3.type="number", name="height";
        cell3.appendChild(element3);   

    var cell4 = row.insertCell(3);
    var element4 = document.createElement('input');
        element4.type="number", name="width";
        cell4.appendChild(element4);   
}

答案 3 :(得分:0)

var row_count = $('#myTable tbody tr').length.length;

在添加和删除行功能

之后调用它