佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1068|回复: 13

用 js insert new row的问题!

[复制链接]
发表于 8-10-2009 09:47 PM | 显示全部楼层 |阅读模式
我做的东西是酱的
原本会有一个row当user按add row时会加一个新的row!

我现在的问题是当我delete row掉时,然后在加回来的时候! !

比如现在有1 2 3把2 delete掉然后在加新的row
会变1 3 3要怎样才能变回1 2 3呢?

下面是我的coding

<HTML>
<HEAD>
<TITLE>test</TITLE>
<SCRIPT language="javascript">
function addRow(tableID) {

var table = document.getElementById(tableID);

var rowCount = table.rows.length;
var row = table.insertRow(rowCount);

var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
cell1.appendChild(element1);

var cell2 = row.insertCell(1);
var no = rowCount + 1
cell2.innerHTML = '<span id="num'+no+'">'+no+'</span>';

var cell3 = row.insertCell(2);
cell3.innerHTML='<input name="test'+no+'" id="test'+no+'" type="text">';

}

function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;

for(var i=0; i<rowCount; i++) {
var row = table.rows;
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked) {
table.deleteRow(i);
rowCount--;
i--;
}

}
}catch(e) {
alert(e);
}
}

</SCRIPT>
</HEAD>
<BODY>

<INPUT type="button" value="Add Row"  />

<INPUT type="button" value="Delete Row"  />

<TABLE id="dataTable" width="350px" border="1">
<TR>
<TD><INPUT type="checkbox" name="chk"/></TD>
<TD> 1 </TD>
<TD> <INPUT type="text" /> </TD>
</TR>
</TABLE>

</BODY>
</HTML>
回复

使用道具 举报


ADVERTISEMENT

发表于 9-10-2009 10:56 AM | 显示全部楼层
var cell2 = row.insertCell(1);
var no = rowCount + 1 <-----
cell2.innerHTML = '<span id="num'+no+'">'+no+'</span>';

当你DELETE 后 , 再 ADD会 新的 , rowCount 已经是 2 了 , 所以 你ADD 新的 ROW , var no = 3  。
回复

使用道具 举报

发表于 9-10-2009 11:28 PM | 显示全部楼层
其实我想说的是。。
你的example code都不跑的。。。

还要我去帮你看。。。
回复

使用道具 举报

发表于 9-10-2009 11:34 PM | 显示全部楼层
原帖由 兔仙人 于 9-10-2009 10:56 AM 发表
var cell2 = row.insertCell(1);
var no = rowCount + 1  


其实不一定要去count的。。。

用单纯的add一个下去就好了
回复

使用道具 举报

发表于 9-10-2009 11:37 PM | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 10-10-2009 02:44 PM | 显示全部楼层
原帖由 小陈陈 于 9-10-2009 11:34 PM 发表
其实不一定要去count的。。。
用单纯的add一个下去就好了


不好意识下面的才是对的!!

<HTML>
<HEAD>
    <TITLE>add product</TITLE>
    <SCRIPT language="javascript">
        function addRow(tableID) {

            var table = document.getElementById(tableID);

            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);

            var cell1 = row.insertCell(0);
            var element1 = document.createElement( "input" ) ;
            element1.type = "checkbox";
            cell1.appendChild(element1);

            var cell2 = row.insertCell(1);
            var no = rowCount + 1
            cell2.innerHTML = '<span id="item_no'+no+'">'+no+'</span>';

            var cell3 = row.insertCell(2);
            cell3.innerHTML='<input name="product'+no+'" id="product'+no+'" type="text">';

        }

        function deleteRow(tableID) {
            try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            for(var i=0; i<rowCount; i++) {
                var row = table.rows;
                var chkbox = row.cells[0].childNodes[0];
                if(null != chkbox && true == chkbox.checked) {
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }

            }
            }catch(e) {
                alert(e);
            }
        }

    </SCRIPT>
</HEAD>
<BODY>

    <INPUT type="button" value="Add Row"  />

    <INPUT type="button" value="Delete Row"  />

    <TABLE id="dataTable" width="350px" border="1">
        <TR>
            <TD><INPUT type="checkbox" name="chk"/></TD>
            <TD> 1 </TD>
            <TD> <INPUT type="text" /> </TD>
        </TR>
    </TABLE>

</BODY>
</HTML>


[ 本帖最后由 Ivan_Teng 于 12-10-2009 08:36 PM 编辑 ]
回复

使用道具 举报

Follow Us
 楼主| 发表于 10-10-2009 02:58 PM | 显示全部楼层
原帖由 兔仙人 于 9-10-2009 10:56 AM 发表
var cell2 = row.insertCell(1);
var no = rowCount + 1  


酱的话是对的!
比如 我有 1 2 3 , 然后把 2 delete 就剩下 1 3 !
我要把 1 3 变成 1 2!
回复

使用道具 举报

发表于 10-10-2009 10:03 PM | 显示全部楼层

回复 7# Ivan_Teng 的帖子

用 小陈陈的 JS , 可行 。。
回复

使用道具 举报


ADVERTISEMENT

发表于 11-10-2009 11:34 PM | 显示全部楼层
原帖由 Ivan_Teng 于 10-10-2009 02:44 PM 发表


不好意识下面的才是对的!!



你sure是可以的吗?
回复

使用道具 举报

发表于 11-10-2009 11:35 PM | 显示全部楼层
原帖由 Ivan_Teng 于 10-10-2009 02:58 PM 发表


酱的话是对的!
比如 我有 1 2 3 , 然后把 2 delete 就剩下 1 3 !
我要把 1 3 变成 1 2!


其实。。都不用在意那个123456789啊!!
回复

使用道具 举报

发表于 11-10-2009 11:35 PM | 显示全部楼层
原帖由 兔仙人 于 10-10-2009 10:03 PM 发表
用 小陈陈的 JS , 可行 。。


delete 的话。。他可能比较头痛了
回复

使用道具 举报

 楼主| 发表于 12-10-2009 08:44 PM | 显示全部楼层
原帖由 小陈陈 于 11-10-2009 11:34 PM 发表


你sure是可以的吗?


不知道为什么每次都自动少了,
onClick  addRow('dataTable')
onClick deleteRow('dataTable')

[ 本帖最后由 Ivan_Teng 于 12-10-2009 08:52 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 12-10-2009 09:32 PM | 显示全部楼层
原帖由 小陈陈 于 11-10-2009 11:35 PM 发表


其实。。都不用在意那个123456789啊!!


不能我要把它放进textfield里做id 和 name 的
回复

使用道具 举报

 楼主| 发表于 12-10-2009 09:36 PM | 显示全部楼层
原帖由 小陈陈 于 11-10-2009 11:35 PM 发表


delete 的话。。他可能比较头痛了


那个link的只是delete last row 吧了!
我做的是每个row都能的!delete是做到了!
只是不能reorder
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 6-12-2025 08:53 PM , Processed in 0.118633 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表