请教:在JSP里,点一下按钮,就在表格里追加一条记录,要在本地实现,不提交,怎么才能实现 那就把所有的记录在load的时候读出来,并写到页面上。至于那俩按钮,就用来写是否显示的属性,一个写成true,一个写成false 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <table><tbody id=mytbody><tr><td>fdasfad</td></tr></tbody></table><SCRIPT LANGUAGE="JavaScript"><!--function AddRow() { var newTr = document.createElement("tr"); var newTd = document.createElement("td"); newTd.innerText = "NewText"; newTr.appendChild(newTd); mytbody.appendChild(newTr);}//--></SCRIPT><INPUT TYPE="button" onclick="AddRow();"> 這個需求是ria的想法,使用Flash等rich client技術就比較容易實現 就用ChDw(米) 的办法就可以了,我倒是有这方面的代码,和你的要求很相近,不知道你要不要??要就给个邮件地址. 用javascript很容易实现找一下网上有个叫阿赖控件的,里面有这个种用法 表格添加删除行的操作 <BODY><SCRIPT LANGUAGE="JavaScript">function addRow(tbl){var a = tbl.insertRow();a.id = "a" + tbl.rows.length;for(var i=0; i<tbl.rows[0].cells.length; i++){var tc = a.insertCell();tc.innerText = " ";tc.onfocus = function(){this.parentElement.parentElement.parentElement.ct = this.parentElement;this.innerHTML = "<input type=\"text\" value=\"" + (this.innerText==" "?"":this.innerText) + "\" style=\"width:100%;height:100%;border:0;\" onblur=\"this.parentElement.innerText=(this.value==''?' ':this.value);\">";this.children[0].focus();};}}function delRow(tbl){if(!tbl.ct) return;tbl.deleteRow(tbl.ct.rowIndex);tbl.ct = null;}</SCRIPT><table border=1 id="tbl"><tr id=a1><td>123</td><td>456</td></tr></table><input type="button" value="添加行" onclick="addRow(document.all.tbl);"><input type="button" value="删除行" onclick="delRow(document.all.tbl);"></BODY> free_card(痛并快乐着) 的代码添加可以,删除好像不行 function insert_row(str,obj)//str:增加一行内的显示内容;obj:表格的ID{ R=eval(obj+".insertRow()") C=R.insertCell() C.innerHTML= strs}function remove_row(obj)//obj:表格的ID{ R=eval(obj+".deleteRow()")} 我刚好做过这方面的东西用javascript先从数据库读取数据,构造一个xml作为字符串传到页面上,然后在页面上用javascript解析xml,再用insertRow这样的方法添加行,你可以考虑把这个方法放在body的onload属性中。至于删除,你可以在javascript中循环判断checkbox是否选中,选中就删除。 我的blog里面的文章,希望对你有帮助: http://blog.csdn.net/lcllcl987在web开发中,经常会遇到这样的问题:怎么样动态的在页面上增加或删除一个文本输入框?通常有两种方法:1.利用后台服务:比如在session中设置一个变量num,每点一次"增加"按钮num的值+1,然后页面刷新一下(返回该页面)。显示的时候从session中取到num的值,然后使用循环生成input框<% for(int i;i<num;i++)){ %><input type="text" name="aaa"/><% } %>删除的情况和此相似,就是点击"删除"按钮后,num的值-1,然后刷新页面.这种方法的确可以实现动态的增加或删除一个文本输入框,只是你先前在页面上填写的东西都没有了.并且需要后台服务器的处理,速度也有一定影响.这不是很好的方法2.利用页面脚本,如javascript实现.javascript由于是运行在客户端,速度自然不成问题,并且你先前在页面上填写的东西并不会因为你的增加或删除文本输而丢失,使用非常方便,下面给出例子:<HTML><Head><Script Language=JavaScript>function insertRow(isTable){ index = isTable.rows.length; nextRow = isTable.insertRow(index); isText = nextRow.insertCell(0); txtArea = nextRow.insertCell(1); index++; index = index.toString(); nameStr = "item"+index; txtStr = "Item "+index; isText.innerHTML = txtStr; txtArea.innerHTML = "<input type=text name="+nameStr+" size=5>";}</Script></Head><Body><Form name='Form1'><Table id='dynTable' cellpadding=5 cellspacing=5 border=1><TR><TD> Item 1</TD><TD><input type="text" name="item1" size="5"></TD></TR><TR><TD> Item 2</TD><TD><input type="text" name="item2" size="5"></TD></TR><TR><TD> Item 3</TD><TD><input type="text" name="item3" size="5"></TD></TR></Table></Form><input type=button value="Insert row" onclick="insertRow(dynTable)" ></Body></HTML>下面在给个功能更全的例子:<html><head><title>My Test Page</title><script type="text/javascript"><!--var textNumber = 1;function addTextBox(form, afterElement) { // Increment the textbox number textNumber++; // Create the label var label = document.createElement("label"); // Create the textbox var textField = document.createElement("input"); textField.setAttribute("type","text"); textField.setAttribute("name","txt"+textNumber); textField.setAttribute("id","txt"+textNumber); // Add the label's text label.appendChild(document.createTextNode("Text Box #"+textNumber+": ")); // Put the textbox inside label.appendChild(textField); // Add it all to the form form.insertBefore(label,afterElement); return false;}function removeTextBox(form) { if (textNumber > 1) { // If there's more than one text box // Remove the last one added form.removeChild(document.getElementById("txt"+textNumber).parentNode); textNumber--; }}//--></script><style type="text/css"><!--label { display:block; margin:.25em 0em;}--></style></head><body><form id="myForm" method="get" action="./" /> <label>Text Box #1: <input type="text" name="txt1" id="txt1" /></label> <p> <input type="button" value="Add Textbox" onclick="addTextBox(this.form,this.parentNode)" /> <input type="button" value="Remove Textbox" onclick="removeTextBox(this.form)" /> </p> <p><input type="Submit" value="Submit" /></p></form></body></html>上面的两个例子基本上可以满足增加或删除一个文本输入筐的要求了吧?特此存档.也希望对大家有帮助. 用javascript写,找到目标对象,是用innerHtml方法,只要注意双引号变单引号就可以啦 关于SSH传数据的问题(我认为是DTO或VO的问题) 帮忙把下面的代码写个正则 页面跳转问题 jsp中有没有当一个字符长度不够定长时,左侧填弃字符的函数?? 有关gridsphere中用ajax的问题 response.sendRedirect()不能正常的工作!急!!!!!!!!! 蔡鸟提问 ajax调用webservice失败 散分100!在线等候 刚建项目就报错 关于system.getproperty("user.dir")的问题 正则表达式的一点问题
<tbody id=mytbody>
<tr>
<td>fdasfad</td>
</tr>
</tbody>
</table>
<SCRIPT LANGUAGE="JavaScript">
<!--
function AddRow() {
var newTr = document.createElement("tr");
var newTd = document.createElement("td");
newTd.innerText = "NewText";
newTr.appendChild(newTd);
mytbody.appendChild(newTr);
}
//-->
</SCRIPT>
<INPUT TYPE="button" onclick="AddRow();">
要就给个邮件地址.
找一下网上有个叫阿赖控件的,里面有这个种用法
<BODY>
<SCRIPT LANGUAGE="JavaScript">
function addRow(tbl)
{
var a = tbl.insertRow();
a.id = "a" + tbl.rows.length;
for(var i=0; i<tbl.rows[0].cells.length; i++)
{
var tc = a.insertCell();
tc.innerText = " ";
tc.onfocus = function()
{
this.parentElement.parentElement.parentElement.ct = this.parentElement;
this.innerHTML = "<input type=\"text\" value=\"" + (this.innerText==" "?"":this.innerText) + "\" style=\"width:100%;height:100%;border:0;\" onblur=\"this.parentElement.innerText=(this.value==''?' ':this.value);\">";
this.children[0].focus();
};
}
}function delRow(tbl)
{
if(!tbl.ct) return;
tbl.deleteRow(tbl.ct.rowIndex);
tbl.ct = null;
}</SCRIPT>
<table border=1 id="tbl">
<tr id=a1>
<td>123</td>
<td>456</td>
</tr>
</table>
<input type="button" value="添加行" onclick="addRow(document.all.tbl);">
<input type="button" value="删除行" onclick="delRow(document.all.tbl);">
</BODY>
{
R=eval(obj+".insertRow()")
C=R.insertCell()
C.innerHTML= strs
}function remove_row(obj)//obj:表格的ID
{
R=eval(obj+".deleteRow()")
}
用javascript先从数据库读取数据,构造一个xml作为字符串传到页面上,然后在页面上用javascript解析xml,再用insertRow这样的方法添加行,你可以考虑把这个方法放在body的onload属性中。
至于删除,你可以在javascript中循环判断checkbox是否选中,选中就删除。
在web开发中,经常会遇到这样的问题:
怎么样动态的在页面上增加或删除一个文本输入框?
通常有两种方法:
1.利用后台服务:比如
在session中设置一个变量num,每点一次"增加"按钮num的值+1,然后页面刷新一下(返回该页面)。
显示的时候从session中取到num的值,然后使用循环生成input框
<% for(int i;i<num;i++)){ %>
<input type="text" name="aaa"/>
<% } %>
删除的情况和此相似,就是点击"删除"按钮后,num的值-1,然后刷新页面.
这种方法的确可以实现动态的增加或删除一个文本输入框,只是你先前在页面上填写的东西都没有了.并且需要后台服务器的处理,速度也有一定影响.这不是很好的方法
2.利用页面脚本,如javascript实现.
javascript由于是运行在客户端,速度自然不成问题,并且你先前在页面上填写的东西并不会因为你的增加或删除文本输而丢失,使用非常方便,下面给出例子:
<HTML>
<Head>
<Script Language=JavaScript>
function insertRow(isTable){
index = isTable.rows.length;
nextRow = isTable.insertRow(index);
isText = nextRow.insertCell(0);
txtArea = nextRow.insertCell(1);
index++;
index = index.toString();
nameStr = "item"+index;
txtStr = "Item "+index;
isText.innerHTML = txtStr;
txtArea.innerHTML = "<input type=text name="+nameStr+" size=5>";
}</Script>
</Head>
<Body>
<Form name='Form1'>
<Table id='dynTable' cellpadding=5 cellspacing=5 border=1>
<TR><TD> Item 1</TD><TD><input type="text" name="item1" size="5"></TD></TR>
<TR><TD> Item 2</TD><TD><input type="text" name="item2" size="5"></TD></TR>
<TR><TD> Item 3</TD><TD><input type="text" name="item3" size="5"></TD></TR>
</Table>
</Form>
<input type=button value="Insert row" onclick="insertRow(dynTable)" >
</Body>
</HTML>下面在给个功能更全的例子:<html>
<head>
<title>My Test Page</title>
<script type="text/javascript">
<!--
var textNumber = 1;
function addTextBox(form, afterElement) {
// Increment the textbox number
textNumber++;
// Create the label
var label = document.createElement("label");
// Create the textbox
var textField = document.createElement("input");
textField.setAttribute("type","text");
textField.setAttribute("name","txt"+textNumber);
textField.setAttribute("id","txt"+textNumber);
// Add the label's text
label.appendChild(document.createTextNode("Text Box #"+textNumber+": "));
// Put the textbox inside
label.appendChild(textField);
// Add it all to the form
form.insertBefore(label,afterElement);
return false;
}
function removeTextBox(form) {
if (textNumber > 1) { // If there's more than one text box
// Remove the last one added
form.removeChild(document.getElementById("txt"+textNumber).parentNode);
textNumber--;
}
}
//-->
</script>
<style type="text/css">
<!--
label {
display:block;
margin:.25em 0em;
}
-->
</style>
</head>
<body>
<form id="myForm" method="get" action="./" />
<label>Text Box #1: <input type="text" name="txt1" id="txt1" /></label>
<p>
<input type="button" value="Add Textbox" onclick="addTextBox(this.form,this.parentNode)" />
<input type="button" value="Remove Textbox" onclick="removeTextBox(this.form)" />
</p>
<p><input type="Submit" value="Submit" /></p>
</form>
</body>
</html>上面的两个例子基本上可以满足增加或删除一个文本输入筐的要求了吧?
特此存档.也希望对大家有帮助.