我是新手想问问下面代码在动态添加行后,假如添加10行。点击删除按钮删第7行,
循环取值的时候只能取到删除行前面6行的值,而删除行后面3行的值就取不了,怎样才能取到删除行后面的值
<SCRIPT >
var rowname = new Array(99);
var rowtype = new Array(99);
var newrow = new Array(99);
var rowsize = new Array(99); for (i = 0; i < 99; i++) {
rowname[i] = '';
rowtype[i] = '';
newrow[i] = '';
rowsize[i] = '25';
} var field_counter_js = 0;
var loaded = 0;
var is_streaming_progress_bar = 0;
var temp_streaming_text = ""; var addRowTo = (function() {
return (function (tableId) {
var d, tbody, tr, td, bgc, i, ii, j;
d = document;
tbody = d.getElementById(tableId).getElementsByTagName("tbody").item(0); tr = d.createElement("tr");
totalrows++;
for (i = 0; i < field_counter_js; i++) {
td = d.createElement("td");
if(rowtype[i] == 'textbox') {
td.innerHTML=" <INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "' id='" + rowname[i] + "_row-" + totalrows + "'> </input> <input size='" + rowsize[i] + "' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'> </input> ";
} tr.appendChild(td);
}
td = d.createElement("td"); td.innerHTML = ' <input type="image" src="t/icon_x.gif" onclick="removeRow(this); return false;" value="Delete">';
tr.appendChild(td);
tbody.appendChild(tr);
}); })(); function removeRow(el) {
var cel;
while (el && el.nodeName.toLowerCase() != "tr")
el = el.parentNode; if (el && el.parentNode) {
cel = el.getElementsByTagName("td").item(0);
el.parentNode.removeChild(el);
}
}
</SCRIPT>
</head>
<SCRIPT type=text/javascript>
rowname[0] = "address";
rowtype[0] = "textbox";
rowsize[0] = "30"; rowname[1] = "address_subnet";
rowtype[1] = "select";
rowsize[1] = "1"; rowname[2] = "detail";
rowtype[2] = "textbox";
rowsize[2] = "30";
</SCRIPT> <body LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>
<table width="580" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse">
<tr>
<td>
<form id="selectstore3" name="selectstore3" method="post" action="">
</form>
<table width="100%" border="1" align="center" cellpadding="5" cellspacing="0" bordercolor="#CCCCCC" style="border-collapse:collapse ">
<tr>
<td width="60" valign="top" bgcolor="#eeeeee">款号: </td>
<td width="494"> <table id=123>
<tbody>
<tr>
<td> <input id=address size=30 type="" value="" name=address > </span> </td>
<td> </td>
<td> <input id=detail size=30 value="" name=detail > </td>
<td> <input id=asd name=asd type="image" src="t/icon_plus.gif" onClick="javascript:addRowTo(123); return false;" value="add"> </td>
</tr>
</tbody>
</table> </td>
</tr> <tr>
<td bgcolor="#eeeeee"> </td>
<td> <input name="button" type=button onClick="changeAction('icsoft_cuxiao_ceshi2.asp')" value="保存">
<input type="reset" name="Submit" value="重新填写"> </td>
</tr>
</table>
<br> </td>
</tr>
</table>
<SCRIPT type=text/javascript>
field_counter_js = 3;
rows = 1;
totalrows = 0;
loaded = 18; </SCRIPT>
循环取值的时候只能取到删除行前面6行的值,而删除行后面3行的值就取不了,怎样才能取到删除行后面的值
<SCRIPT >
var rowname = new Array(99);
var rowtype = new Array(99);
var newrow = new Array(99);
var rowsize = new Array(99); for (i = 0; i < 99; i++) {
rowname[i] = '';
rowtype[i] = '';
newrow[i] = '';
rowsize[i] = '25';
} var field_counter_js = 0;
var loaded = 0;
var is_streaming_progress_bar = 0;
var temp_streaming_text = ""; var addRowTo = (function() {
return (function (tableId) {
var d, tbody, tr, td, bgc, i, ii, j;
d = document;
tbody = d.getElementById(tableId).getElementsByTagName("tbody").item(0); tr = d.createElement("tr");
totalrows++;
for (i = 0; i < field_counter_js; i++) {
td = d.createElement("td");
if(rowtype[i] == 'textbox') {
td.innerHTML=" <INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "' id='" + rowname[i] + "_row-" + totalrows + "'> </input> <input size='" + rowsize[i] + "' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'> </input> ";
} tr.appendChild(td);
}
td = d.createElement("td"); td.innerHTML = ' <input type="image" src="t/icon_x.gif" onclick="removeRow(this); return false;" value="Delete">';
tr.appendChild(td);
tbody.appendChild(tr);
}); })(); function removeRow(el) {
var cel;
while (el && el.nodeName.toLowerCase() != "tr")
el = el.parentNode; if (el && el.parentNode) {
cel = el.getElementsByTagName("td").item(0);
el.parentNode.removeChild(el);
}
}
</SCRIPT>
</head>
<SCRIPT type=text/javascript>
rowname[0] = "address";
rowtype[0] = "textbox";
rowsize[0] = "30"; rowname[1] = "address_subnet";
rowtype[1] = "select";
rowsize[1] = "1"; rowname[2] = "detail";
rowtype[2] = "textbox";
rowsize[2] = "30";
</SCRIPT> <body LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>
<table width="580" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse">
<tr>
<td>
<form id="selectstore3" name="selectstore3" method="post" action="">
</form>
<table width="100%" border="1" align="center" cellpadding="5" cellspacing="0" bordercolor="#CCCCCC" style="border-collapse:collapse ">
<tr>
<td width="60" valign="top" bgcolor="#eeeeee">款号: </td>
<td width="494"> <table id=123>
<tbody>
<tr>
<td> <input id=address size=30 type="" value="" name=address > </span> </td>
<td> </td>
<td> <input id=detail size=30 value="" name=detail > </td>
<td> <input id=asd name=asd type="image" src="t/icon_plus.gif" onClick="javascript:addRowTo(123); return false;" value="add"> </td>
</tr>
</tbody>
</table> </td>
</tr> <tr>
<td bgcolor="#eeeeee"> </td>
<td> <input name="button" type=button onClick="changeAction('icsoft_cuxiao_ceshi2.asp')" value="保存">
<input type="reset" name="Submit" value="重新填写"> </td>
</tr>
</table>
<br> </td>
</tr>
</table>
<SCRIPT type=text/javascript>
field_counter_js = 3;
rows = 1;
totalrows = 0;
loaded = 18; </SCRIPT>
解决方案 »
- javascript如何调用系统的字体选择器,就像调用系统调色板一样.
- 如何拼凑字符串和变量?(var imgs = "images/2011laugh_01.jpg|images/2011laugh_02.jpg")|左右都是变量
- 请教关于jQuery选择器的问题
- 请问这样的正则表达式该怎样写?
- 请教如何在网页中让flash窗口得到键盘事件,而不让浏览器窗口响应鼠标事件呢?
- 添加js代码后png图片就看不见了?
- 需用JS列举出多个数字的全部组合方式,规则有些特殊,请教高手
- 求表格数据核对方法
- 如何从这样的字符串中截取字符!
- 下拉框选值动态计算次数
- 还是有关 js 弹窗有问题?
- js传对象怎么改?急!!
1、利用数组来实现你的功能:建立一个数组 var arr = [];
2、你动态添加行的时候就向这个数组里面压栈arr.push(obj);//注意要和你的行号保持一致
3、当你点击删除行的按钮的时候,触发事件,把当前的行号当做参数传入这个事件函数中。在数组arr中删除掉对应的行号对应的数据,剩下的就是你要的。你当然可以循环出来。
---- 思路,就是用一个事先准备好的数组来存放你添加的所有行,删除的时候,在这个数组中删除对应行号的数组元素,遍历这个数组就OK了,不用去再遍历DOM树,那么多费劲,而且效率低。---
--- 如果可以,给分 ---
(develop_design_) 思路可以是可以,能不能帮我写下代码啊
2.得到table对象,可以定位到行号,就不会丢失后3行
下面给个1的实现<SCRIPT >
var rowname = new Array(99);
var rowtype = new Array(99);
var newrow = new Array(99);
var rowsize = new Array(99); for (i = 0; i < 99; i++) {
rowname[i] = '';
rowtype[i] = '';
newrow[i] = '';
rowsize[i] = '25';
} var field_counter_js = 0;
var loaded = 0;
var is_streaming_progress_bar = 0;
var temp_streaming_text = ""; var addRowTo = (function() {
return (function (tableId) {
var d, tbody, tr, td, bgc, i, ii, j;
d = document;
tbody = d.getElementById(tableId).getElementsByTagName("tbody").item(0); tr = d.createElement("tr");
totalrows++;
for (i = 0; i < field_counter_js; i++) {
td = d.createElement("td");
if(rowtype[i] == 'textbox') {
td.innerHTML=" <INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "' id='" + rowname[i] + "_row-" + totalrows + "'> </input> <input size='" + rowsize[i] + "' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'> </input> ";
} tr.appendChild(td);
}
td = d.createElement("td"); td.innerHTML = ' <input type="image" src="t/icon_x.gif" onclick="removeRow(this); return false;" value="Delete">';
tr.appendChild(td);
tbody.appendChild(tr);
}); })(); function removeRow(el) {
var cel;
while (el && el.nodeName.toLowerCase() != "tr")
el = el.parentNode; if (el && el.parentNode) {
cel = el.getElementsByTagName("td").item(0);
el.parentNode.removeChild(el);
}
}
function getValue(){
var input=document.getElementsByTagName("input");
for(var i=0;i<input.length;i++){
if(input[i].type=="text"){
alert(input[i].value)
}
}
}
</SCRIPT>
</head>
<SCRIPT type=text/javascript>
rowname[0] = "address";
rowtype[0] = "textbox";
rowsize[0] = "30"; rowname[1] = "address_subnet";
rowtype[1] = "select";
rowsize[1] = "1"; rowname[2] = "detail";
rowtype[2] = "textbox";
rowsize[2] = "30";
</SCRIPT><body LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>
<table id="tb" width="580" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse">
<tr>
<td>
<form id="selectstore3" name="selectstore3" method="post" action="">
</form>
<table width="100%" border="1" align="center" cellpadding="5" cellspacing="0" bordercolor="#CCCCCC" style="border-collapse:collapse ">
<tr>
<td width="60" valign="top" bgcolor="#eeeeee">款号: </td>
<td width="494"> <table id=123>
<tbody>
<tr>
<td> <input id=address size=30 type="" value="" name=address > </span> </td>
<td> </td>
<td> <input id=detail size=30 value="" name=detail > </td>
<td> <input id=asd name=asd type="image" src="t/icon_plus.gif" onClick="javascript:addRowTo(123); return false;" value="add"> </td>
</tr>
</tbody>
</table> </td>
</tr> <tr>
<td bgcolor="#eeeeee"> </td>
<td> <input name="button" type=button onClick="changeAction('icsoft_cuxiao_ceshi2.asp')" value="保存">
<input type="reset" name="Submit" value="重新填写"> </td>
</tr>
</table>
<br> </td>
</tr> </table>
<SCRIPT type=text/javascript>
field_counter_js = 3;
rows = 1;
totalrows = 0;
loaded = 18;</SCRIPT>
<input type="button" value="取值" onclick="getValue()">