使用 DOM 添加和删除 html 表格行时如何避免第一行被删除?

发布于 2024-12-22 21:03:47 字数 1844 浏览 0 评论 0原文

下面的小提琴来自另一个问题。它包含使用 JavaScript 动态添加和删除 html 表行的输出。小提琴中的代码给了我我想要的。但我的代码有一个问题。在逐行删除时,第一行也被删除。如何仅隐藏第一行的删除按钮?

http://jsfiddle.net/7AeDQ/

HTML

<div id="POItablediv">
    <input type="button" id="addPOIbutton" value="Add POIs"/><br/><br/>
    <table id="POITable" border="1">
        <tr>
            <td>POI</td>
            <td>Latitude</td>
            <td>Longitude</td>
            <td>Delete?</td>
            <td>Add Rows?</td>
        </tr>
        <tr>
            <td>1</td>
            <td><input size=25 type="text" id="latbox"/></td>
            <td><input size=25 type="text" id="lngbox" readonly=true/></td>
            <td><input type="button" id="delPOIbutton" value="Delete" onclick="deleteRow(this)"/></td>
            <td><input type="button" id="addmorePOIbutton" value="Add More POIs" onclick="insRow()"/></td>
        </tr>
    </table>

JAVASCRIPT

function deleteRow(row)
{
    var i=row.parentNode.parentNode.rowIndex;
    document.getElementById('POITable').deleteRow(i);
}


function insRow()
{
    console.log( 'hi');
    var x=document.getElementById('POITable');
    var new_row = x.rows[1].cloneNode(true);
    var len = x.rows.length;
    new_row.cells[0].innerHTML = len;

    var inp1 = new_row.cells[1].getElementsByTagName('input')[0];
    inp1.id += len;
    inp1.value = '';
    var inp2 = new_row.cells[2].getElementsByTagName('input')[0];
    inp2.id += len;
    inp2.value = '';
    x.appendChild( new_row );
}

以上是小提琴中的代码。如果您无法加载小提琴,希望这会有所帮助。有时会发生这种情况。

The below fiddle is from another question. It contains the output of a dynamic addition and deletion of html table rows using javascript. The code in the fiddle gave me what i want. But i have one problem with the code. While deleting the rows one by one, the first row is also getting deleted. How can i hide the delete button only in the first row ?

http://jsfiddle.net/7AeDQ/

HTML

<div id="POItablediv">
    <input type="button" id="addPOIbutton" value="Add POIs"/><br/><br/>
    <table id="POITable" border="1">
        <tr>
            <td>POI</td>
            <td>Latitude</td>
            <td>Longitude</td>
            <td>Delete?</td>
            <td>Add Rows?</td>
        </tr>
        <tr>
            <td>1</td>
            <td><input size=25 type="text" id="latbox"/></td>
            <td><input size=25 type="text" id="lngbox" readonly=true/></td>
            <td><input type="button" id="delPOIbutton" value="Delete" onclick="deleteRow(this)"/></td>
            <td><input type="button" id="addmorePOIbutton" value="Add More POIs" onclick="insRow()"/></td>
        </tr>
    </table>

JAVASCRIPT

function deleteRow(row)
{
    var i=row.parentNode.parentNode.rowIndex;
    document.getElementById('POITable').deleteRow(i);
}


function insRow()
{
    console.log( 'hi');
    var x=document.getElementById('POITable');
    var new_row = x.rows[1].cloneNode(true);
    var len = x.rows.length;
    new_row.cells[0].innerHTML = len;

    var inp1 = new_row.cells[1].getElementsByTagName('input')[0];
    inp1.id += len;
    inp1.value = '';
    var inp2 = new_row.cells[2].getElementsByTagName('input')[0];
    inp2.id += len;
    inp2.value = '';
    x.appendChild( new_row );
}

Above is the code in the fiddle. Hope this helps if you can't load fiddle. It happens sometimes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

壹場煙雨 2024-12-29 21:03:47

这看起来很优雅。

隐藏第一个:

$("table tr:eq(1) td:eq(3) input").css("display","none");

然后显示新创建的tr:

var noRows = $("#POITable tr").length-1;
$("table tr:eq("+noRows+") td:eq(3) input").css("display","block");

Fiddle:
http://jsfiddle.net/Lh8KL/

This looks elegant.

Hide the first:

$("table tr:eq(1) td:eq(3) input").css("display","none");

Then show the newly created tr:

var noRows = $("#POITable tr").length-1;
$("table tr:eq("+noRows+") td:eq(3) input").css("display","block");

Fiddle:
http://jsfiddle.net/Lh8KL/

蓝海似她心 2024-12-29 21:03:47

只需添加以下语句:

x.rows[1].cells[3].children[0].style.display = x.rows.length > 2 ? '' : 'none';

这将获取对第三个单元格第一行中的 input 元素的引用,并在只有一行时隐藏它。

更新的小提琴:http://jsfiddle.net/7AeDQ/23/

Just add this statement:

x.rows[1].cells[3].children[0].style.display = x.rows.length > 2 ? '' : 'none';

This gets a reference to the input element in the first row in the third cell and hides it if there is only one row.

Updated fiddle: http://jsfiddle.net/7AeDQ/23/

零度℉ 2024-12-29 21:03:47

只需在脚本中添加以下行

    new_row.cells[3].getElementsByTagName('input')[0].removeAttribute('style');

,在 HTML 中进行一些修改(在第一个删除按钮中将禁用添加为 true)

   <td><input type="button" id="delPOIbutton" value="Delete" onclick="deleteRow(this)" style="display:none"/></td>

检查小提琴: http://jsfiddle.net/7AeDQ/25/

just add the following line in the script

    new_row.cells[3].getElementsByTagName('input')[0].removeAttribute('style');

Plus a little modification in the HTML (add disabled to true in the first delete button)

   <td><input type="button" id="delPOIbutton" value="Delete" onclick="deleteRow(this)" style="display:none"/></td>

Check fiddle: http://jsfiddle.net/7AeDQ/25/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文