Javascript 动态添加&删除列表框内容

王朝学院·作者佚名  2008-12-30
窄屏简体版  字體: 小  |  中  |  大  |  超大  

点“添加参与人”按钮可以添加一行,每行后面都有一个删除按钮,可以删除所在行,“清空”则删除所有的行。 这种效果在需要批量添加数据的时候非常有用,可以在客户端添加完一批数据,然后通过AJAX一次提交给服务器处理,下面是完整代码:

Body部份:

<div>

<table width="613" border="0" cellpadding="2" cellspacing="1" id="SignFrame">

<tr id="trHeader">

<td width="27" bgcolor="#96E0E2">序号</td>

<td width="64" bgcolor="#96E0E2">用户姓名</td>

<td width="98" bgcolor="#96E0E2">电子邮箱</td>

<td width="92" bgcolor="#96E0E2">固定电话</td>

<td width="86" bgcolor="#96E0E2">移动手机</td>

<td width="153" bgcolor="#96E0E2">公司名称</td>

<td width="57" align="center" bgcolor="#96E0E2">&nbsp;</td>

</tr>

</table>

</div>

<div>

<input type="button" name="Submit" value="添加参与人" onclick="AddSignRow()" />

<input type="button" name="Submit2" value="清空" onclick="ClearAllSign()" />

<input name='txtTRLastIndex' type='hidden' id='txtTRLastIndex' value="1" />

</div>

JS代码部份<script language="javascript">// Example: obj = findObj("image1");

function findObj(theObj, theDoc){ var p, i, foundObj; if(!theDoc) theDoc = document; if( (p = theObj.indexOf("?")) > 0 && parent.frames.length) { theDoc = parent.frames[theObj.substring(p+1)].document; theObj = theObj.substring(0,p); } if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj]; for (i=0; !foundObj && i < theDoc.forms.length; i++) foundObj = theDoc.forms[i][theObj]; for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) foundObj = findObj(theObj,theDoc.layers[i].document); if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj); return foundObj;}

//添加一个参与人填写行

function AddSignRow(){//读取最后一行的行号,存放在txtTRLastIndex文本框中

var txtTRLastIndex = findObj("txtTRLastIndex",document);

var rowID = parseInt(txtTRLastIndex.value);

var signFrame = findObj("SignFrame",document);

//添加行

var newTR = signFrame.insertRow(signFrame.rows.length);

newTR.id = "SignItem" + rowID;

//添加列:序号

var newNameTD=newTR.insertCell(0);

//添加列内容

newNameTD.innerHTML = newTR.rowIndex.toString();

//添加列:姓名

var newNameTD=newTR.insertCell(1);

//添加列内容

newNameTD.innerHTML = "<input name='txtName" + rowID + "' id='txtName" + rowID + "' type='text' size='12' />";

//添加列:电子邮箱

var newEmailTD=newTR.insertCell(2);

//添加列内容

newEmailTD.innerHTML = "<input name='txtEMail" + rowID + "' id='txtEmail" + rowID + "' type='text' size='20' />";

//添加列:电话

var newTelTD=newTR.insertCell(3);

//添加列内容

newTelTD.innerHTML = "<input name='txtTel" + rowID + "' id='txtTel" + rowID + "' type='text' size='10' />";

//添加列:手机

var newMobileTD=newTR.insertCell(4);

//添加列内容

newMobileTD.innerHTML = "<input name='txtMobile" + rowID + "' id='txtMobile" + rowID + "' type='text' size='12' />";

//添加列:公司名

var newCompanyTD=newTR.insertCell(5);

//添加列内容

newCompanyTD.innerHTML = "<input name='txtCompany" + rowID + "' id='txtCompany" + rowID + "' type='text' size='20' />";

//添加列:删除按钮

var newDeleteTD=newTR.insertCell(6);

//添加列内容

newDeleteTD.innerHTML = "<div align='center' style='width:40px'><a href='javascript:;' onclick="DeleteSignRow('SignItem" + rowID + "')">删除</a></div>";

//将行号推进下一行

txtTRLastIndex.value = (rowID + 1).toString() ;

}

//删除指定行

function DeleteSignRow(rowid){

var signFrame = findObj("SignFrame",document);

var signItem = findObj(rowid,document);

//获取将要删除的行的Index

var rowIndex = signItem.rowIndex;

//删除指定Index的行

signFrame.deleteRow(rowIndex);

//重新排列序号,如果没有序号,这一步省略

for(i=rowIndex;i<signFrame.rows.length;i++){

signFrame.rows[i].cells[0].innerHTML = i.toString();

}

}//清空列表

function ClearAllSign(){

if(confirm('确定要清空所有参与人吗?')){

var signFrame = findObj("SignFrame",document);

var rowscount = signFrame.rows.length;

//循环删除行,从最后一行往前删除

for(i=rowscount - 1;i > 0; i--){

signFrame.deleteRow(i);

}

//重置最后行号为1

var txtTRLastIndex = findObj("txtTRLastIndex",document);

txtTRLastIndex.value = "1";

//预添加一行

AddSignRow();

}

}

</script>

例一

<HTML>

<HEAD>

<TITLE> 测试Select</TITLE>

<script>

function addItem()

{

var txt=document.all("txt").value;

if(txt!="")

{

document.myForm.mySelect.length++;

document.myForm.mySelect.options[document.myForm.mySelect.length - 1].text=txt;

document.myForm.mySelect.options[document.myForm.mySelect.length - 1].value =document.myForm.mySelect.length;

}

else

{

alert("请填写内容");

}

}

</script>

</HEAD>

<BODY>

<form name="myForm">

<SELECT NAME="mySelect" multiple="multiple">

<option value="1">item1</option>

</SELECT></form>

内容:<input type="text" size=20 name="txt" id="txt"><br>

<input type="button" name="addBtn" value="添加内容" onClick="addItem();">

</BODY>

</HTML>

例二

<HTML>

<HEAD>

<TITLE> New Document </TITLE>

</HEAD>

<BODY>

<input type="button" name="btn" value="添加一行" onClick="addrow()">

<table id="activeTable" style="border: #000000 solid 1px;" cellspacing="0" width="100%" cellpadding="0">

<caption>請&nbsp;求&nbsp;内&nbsp;訳</caption>

<tr>

<td nowrap>請求月</td>

<td nowrap>計上月</td>

<td nowrap>請求件名</td>

<td nowrap>入金期限日</td>

<td nowrap>金額</td>

<td nowrap>消費税</td>

<td nowrap>備考</td>

<td nowrap>操作</td>

</tr>

<table>

</BODY>

</HTML>

<SCRIPT LANGUAGE="JavaScript">

<!--

function addrow() {

var row = activeTable.insertRow(activeTable.rows.length);

var col = row.insertCell(0);

var i = row.rowIndex;

col.innerHTML = '<input name="seituki1" size="2"><input name="seituki2" size="2">';

col = row.insertCell(1);

col.innerHTML = '<input name="keituki1" size="2"><input name="keituki2" size="2">';

col = row.insertCell(2);

col.innerHTML = '<input name="kenmei" size="18" value="">';

col = row.insertCell(3);

col.innerHTML = '<input name="kigen" size="17">';

col = row.insertCell(4);

col.innerHTML = '<input name="kingaku1" size="15" style="text-align: right">';

col = row.insertCell(5);

col.innerHTML = '<input name="zei1" size="13" style="text-align: right">';

col = row.insertCell(6);

col.innerHTML = '<input name="bikou1" value="' + i + ' " size="15">';

col = row.insertCell(7);

col.innerHTML = '<button onClick="delrow()">删除本行</button>';

}

function delrow () {

var srcName = document.getElementsByTagName("button");

var rowIndex = 0;

for ( i=0;i<srcName.length;i++){

if(srcName[i]==event.srcElement)

rowIndex=i;

}

activeTable.deleteRow(rowIndex + 1);

}

</script>

例三

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>made by meixx</title>

<script language="javascript">

<!--

function Add(ObjSource,ObjTarget){

for(var i=0;i<ObjSource.length;i++){

if(ObjSource.options[i].selected){

var opt=document.createElement("OPTION");

ObjTarget.add(opt);

opt.value=ObjSource.options[i].value;

opt.text=ObjSource.options[i].text;

ObjSource.options.removeChild(ObjSource.options[i--]);

opt.selected=true;

}

}

}

function AddAll(ObjSource,ObjTarget){

SelectAll(ObjSource);

Add(ObjSource,ObjTarget);

}

function SelectAll(ObjSource){

for(var i=0;i<ObjSource.length;i++){

ObjSource.options[i].selected=true;

}

}

function doSubmit(){

SelectAll(frmDisplay.dltTarget);

//frmDisplay.action="";//设置form 提交的action

alert(frmDisplay.action);

//frmDisplay.submit();//取消注释即可,提交上去的options

}

//->

</script>

</head>

<body>

<table width="350" border="1" style="border-collapse:collapse " bordercolor="#111111" cellpadding="0" cellspacing="0">

<tr>

<td width="150">

<select name="dltSource" size="10" multiple style="width:100% ">

<option value="0">辽宁</option>

<option value="0">黑龙江</option>

<option value="0">吉林</option>

<option value="0">河北</option>

<option value="0">河南</option>

<option value="0">江苏</option>

<option value="0">浙江</option>

<option value="0">海南</option>

<option value="0">福建</option>

<option value="0">山东</option>

<option value="0">青海</option>

<option value="0">宁夏</option>

<option value="0">内蒙古</option>

<option value="0">新疆</option>

<option value="0">陕西</option>

</select>

</td>

<td width="50" valign="middle">

<p style="width:100%" align="center"><input type="button" value="->" onClick="Add(document.all.dltSource,frmDisplay.dltTarget)" title="添加"></p>

<p style="width:100%" align="center"><input type="button" value="=>" onClick="AddAll(document.all.dltSource,frmDisplay.dltTarget)" title="添加全部"></p>

<p style="width:100%" align="center"><input type="button" value="<-" onClick="Add(frmDisplay.dltTarget,document.all.dltSource)" title="删除"></p>

<p style="width:100%" align="center"><input type="button" value="<=" onClick="AddAll(frmDisplay.dltTarget,document.all.dltSource)" title="删除全部"></p>

</td>

<td width="150">

<form id="frmDisplay" action="xxx.jsp" method="post" style="margin:0 ">

<select name="dltTarget" size="10" multiple style="width:100% "></select>

</form>

</td>

</tr>

<tr>

<td align="center">作者:梅雪香</td>

<td align="center">ver:1.0</td>

<td align="center">

<input type="reset" onClick="javascript:window.location.reload();" value="重置">&nbsp;&nbsp;

<input type="button" value="提交" onClick="doSubmit()">

</td>

</tr>

</table>

</body>

</html>

例四

<table id="tab" width="200" height="70" border="1" cellpadding="0" cellspacing="0">

<tbody>

<tr><td>第一行</td></tr>

<tr><td>第二行</td></tr>

<tr><td>第三行</td></tr>

<tr><td>第四行</td></tr>

</tbody>

</table>

<br>

<button onClick="del()">删除行</button>

<script language="JavaScript">

function del(){

tab.firstChild.removeChild(tab.rows[1]) //这个firstChild是指<tbody>,删除第二行

tab.rows[0].parentElement.removeChild(tab.rows[0]) //用另一方法删除第一行

}

</script>

例五

<button onClick="add()">add</button>

<button onClick="del()">del</button>

<button onClick="test()">test</button>

<table id="t1" border="1"></table>

<script language="JavaScript">

var n=0;

function add(){

n++;

t1.insertRow().insertCell().innerHTML = '<input type="radio" name="tt"><input name="test'+n+'"><button onclick="deleteRow(this)">delthis</button>';

//t1.insertRow().insertCell().innerHTML = '<input type="radio" name="tt"><input name="test'+t1.rows.length+'">';

}

function del(){

var c = document.getElementsByName('tt');

for(var i=0; i<c.length; i++)

if(c[i].checked)

t1.deleteRow(i);

}

function deleteRow(obj){

t1.deleteRow(obj.parentElement.parentElement.rowIndex);

}

function test(){

for(i=0;i<t1.rows.length;i++) alert(t1.rows[i].cells[0].innerHTML);

}

</SCRIPT>

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航