大家有没有遇到过JQUERY增一行,删一行不灵的问题??????

时间:2022-08-17 20:59:17
要求是一个TABLE列表10行,为了保持行数不变,并且是无刷新更新列表行。
在FORM中新增一条记录的同时删除最后一行的记录,保持和数不变,我用的方法:

$("#tableId tr:first").before("<tr><td>asdf</td></tr>");
$("#tableId tr:last").remove();

这是在第一行新增一条,然后删除最的一行。
但这么用不行!原因是对于原来刷出来的列表10条记录是可以的,但如果你新增了10条以上,
就是把原来刷出来的10条都换成你新增的这10条的话,你再新增,每新增两次,他才删一条,
所以造成多于10条记录,并不断的增加现像,不知道是怎么回事??
是不是对于JQUERY自己无刷新,新增的记录存在遍利的问题????

5 个解决方案

#1


楼主,我测试了没有出现你说的问题锕。我用IE7,8,9和火狐测试都没问题,测试代码如下
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        function add() {
            $("#tableId tr:first").before("<tr><td>" + (new Date().getMilliseconds()) + "</td></tr>");
            $("#tableId tr:last").remove();
        }
    </script>
</head>
<body>
<table border="1" id="tableId">
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr><td>3</td></tr>
<tr><td>4</td></tr>
<tr><td>5</td></tr>
<tr><td>6</td></tr>
<tr><td>7</td></tr>
<tr><td>8</td></tr>
<tr><td>9</td></tr>
<tr><td>10</td></tr>
</table>
<input type="button" value="add" onclick="add()" />
</body>
</html>

#2



function addRow() {
        var r = workTable.rows.length;
        if (r< 10) {
            //添加一行
            var newTr = workTable.insertRow();
            //添加两列
            var newTd0 = newTr.insertCell();            
            var newTd1 = newTr.insertCell();
            //设置列内容和属性
            newTd0.innerText =r+1;
            newTd1.innerHTML = '<input type=text class="txt"/>';
            r++;
        } else {
            alert("最多添加10条记录!");
            return;
         }
    }
    //var row = document.getElementById('workTable').rows.length - 1;
    function delRow() {
        var r = workTable.rows.length;        
        if (r> 5) {
            //workTable.deleteRow(i);
            document.getElementById('workTable').deleteRow(r-1);
            r--;
       } else {
            alert("剩余5条记录不能删除!");           
        }
     }

用这个增加  、删除方法绝对不存在  不灵的问题。。。。

#3


程序逻辑没有问题。
但是我个人建议你 先删除后新增,保你百试不爽。

$("#tableId tr:last").remove();
$("#tableId tr:first").before("<tr><td>asdf</td></tr>");

#4


//也可以用prepend新增行试试:
$("#tableId").prepend('<tr><td>asdf</td></tr>');

#5


其实我找到问题了,是我在传入的数据里,多写了个<tr>

#1


楼主,我测试了没有出现你说的问题锕。我用IE7,8,9和火狐测试都没问题,测试代码如下
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        function add() {
            $("#tableId tr:first").before("<tr><td>" + (new Date().getMilliseconds()) + "</td></tr>");
            $("#tableId tr:last").remove();
        }
    </script>
</head>
<body>
<table border="1" id="tableId">
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr><td>3</td></tr>
<tr><td>4</td></tr>
<tr><td>5</td></tr>
<tr><td>6</td></tr>
<tr><td>7</td></tr>
<tr><td>8</td></tr>
<tr><td>9</td></tr>
<tr><td>10</td></tr>
</table>
<input type="button" value="add" onclick="add()" />
</body>
</html>

#2



function addRow() {
        var r = workTable.rows.length;
        if (r< 10) {
            //添加一行
            var newTr = workTable.insertRow();
            //添加两列
            var newTd0 = newTr.insertCell();            
            var newTd1 = newTr.insertCell();
            //设置列内容和属性
            newTd0.innerText =r+1;
            newTd1.innerHTML = '<input type=text class="txt"/>';
            r++;
        } else {
            alert("最多添加10条记录!");
            return;
         }
    }
    //var row = document.getElementById('workTable').rows.length - 1;
    function delRow() {
        var r = workTable.rows.length;        
        if (r> 5) {
            //workTable.deleteRow(i);
            document.getElementById('workTable').deleteRow(r-1);
            r--;
       } else {
            alert("剩余5条记录不能删除!");           
        }
     }

用这个增加  、删除方法绝对不存在  不灵的问题。。。。

#3


程序逻辑没有问题。
但是我个人建议你 先删除后新增,保你百试不爽。

$("#tableId tr:last").remove();
$("#tableId tr:first").before("<tr><td>asdf</td></tr>");

#4


//也可以用prepend新增行试试:
$("#tableId").prepend('<tr><td>asdf</td></tr>');

#5


其实我找到问题了,是我在传入的数据里,多写了个<tr>