to freefalcon(心宇) 不错.问题可以解决..有很多方法解决..换个角度还行不行呢..至于那个命名,一再去纠缠不休实在没必要.服务端完全可以按Request.form(name)(i)的方式去访问同名表单域.删除的代码更是简单,一个deleteRow就搞定.试想,如果让你写成一个HTC zz315(钟钟) 这位兄弟的还能不能符合要求呢??
<script> function addNewQuestion(){ var t136=form1.all.tags("table")[0] var o=t136.rows(1); var r=t136.insertRow(); var l=t136.rows.length for(i=0;i<o.cells.length;i++){ var c=r.insertCell(); c.innerHTML=o.cells(i).innerHTML try{ c.children(0).name=c.children(0).name.replace(/\d+$/,"")+(l-1); c.children(0).value=""; c.children(0).value=c.children(0).name;//调试用,可删去 }catch(e){}; } } </script>
function AddRow()
{
eTable=event.srcElement.parentElement.parentElement.parentElement.parentElement
eTr=event.srcElement.parentElement.parentElement
eNewTr=eTable.insertRow()
for(i=0;i<eTr.cells.length;i++)
{
eNewTr.insertCell().innerHTML=eTr.cells(i).innerHTML
}
}
</script>
<table width=100%>
<tr><td><input type=text id=text1 name=text1></td><TD><input type=text onkeypress="AddRow()" id=text2 name=text2></td></tr>
</table>
<input name=name1><input name=age1><input name=city1>
中<input name=city1>回车,增加
<input name=name2><input name=age2><input name=city2>
然后<input name=city2>回车,再增加,是吗?
<input name=name3><input name=age3><input name=city3>是仅限于3个还是很多?
我的理解是否正确?
<tr>
<form id="form1" name="form1" action="program/survey/SurveyEdit.asp" method=post>
<td>
<table cellspacing="0" cellpadding="4" width="100%" border="0" class="tableborder">
<tr>
<td bgcolor="#C7E8F8">
<div align="center"><b>问题 1:</b> </div>
</td>
<td bgcolor="#C7E8F8">
<input size="60" name="Question1" class="tableborder" onclick="alert(this.name)" onkeydown="if(event.keyCode==13) addNewQuestion()">
</td>
</tr>
</table>
<div id="__idInsertBefore"></div>
<input type="hidden" value="1" name="newTable">
<br />
<div align="right" style="padding:4px">
<input type=button onClick="addNewQuestion()" value="增加一个新问题" class="CustButton" />
<input type="button" value="保存设置" class="CustButton">
<input type="reset" value="重新设置" class="CustButton">
</div>
</td>
</form>
</tr>
</table>
<script>
function addNewQuestion()
{
document.form1.newTable.value = parseInt(document.form1.newTable.value) + 1;
var newItemId;
if( (document.form1.newTable.value).length > 2 )
{
alert("您的调查问题总数不能超过 99 个。")
window.location.reload();
}newItemId = document.form1.newTable.value;var objItem = '<table cellspacing="0" cellpadding="4" width="100%" border="0" class="tableborder">';
objItem += ' <tr>';
objItem += '<td bgcolor="#C7E8F8">';
objItem += ' <div align="center"><b>问题 ' + newItemId + ':</b> </div>';
objItem += ' </td>';
objItem += ' <td bgcolor="#C7E8F8">';
objItem += ' <input size="60" name="Question' + newItemId + '" class="tableborder" onclick="alert(this.name)" onkeydown="if(event.keyCode==13) addNewQuestion()">';
objItem += ' </td>';
objItem += ' </tr>';
objItem += '</table>';
document.all.__idInsertBefore.insertAdjacentHTML("beforeBegin", objItem);
document.form1.elements["Question" + newItemId].focus()
}function showTips(obj)
{
obj.title=obj.value;
}</script>
考..自己试都不试一下在这里发表什么看法啦..也不怕误导人家
inputArr=split(request("inputName"),", ")
var n=0;
var theRow="<input><input><input><br>";
function addRow()
{
if(zz.elements[n*3+2].name==event.srcElement.name)
/* 注意上面的判断语句,如果表单中有其他的元素,此处可能需要改动!下同。 */
{
zz.insertAdjacentHTML("beforeEnd",theRow);
n++;
zz.elements[n*3].name="a"+n;
zz.elements[n*3+1].name="b"+n;
zz.elements[n*3+2].name="c"+n;
}
}
</script><form onkeydown="if(event.keyCode==13){event.keyCode=9;addRow();}" id=zz>
<input name=a0><input name=b0><input name=c0><br>
</form>
------------------------------------------------------------------<script language=javascript>
var n=0;
var theRow="<input><input><input><br>";
function addRow()
{
if(zz.childNodes[n*3+2].name==event.srcElement.name)
{
zz.insertAdjacentHTML("beforeEnd",theRow);
n++;
zz.childNodes[n*3].name="a"+n;
zz.childNodes[n*3+1].name="b"+n;
zz.childNodes[n*3+2].name="c"+n;
}
}
</script><form onkeydown="if(event.keyCode==13)event.keyCode=9">
<input><br><br>
<span id=zz onkeydown="if(event.keyCode==13)addRow()"><input name=a0><input name=b0><input name=c0><br></span>
<br><input type=submit>
</form>
在下佩服佩服..佩服得五体头地..call换个表格布局你再写写看..
再来个<td colspan=x> <select></select></td><td><textarea></textarea><button></button></td>
你的代码又要改不少..
2。我记得lhdjk (耗子) 曾在相关问题中提到要求即能增加一行,又能删除一行,如果这样,那么按递增的顺序命名就没有必要,而且反而会带来麻烦,因为一旦用户删除的是中间某一行,递增的顺序就被打乱了,除非你再重新命名,或者只允许删除最后一行
不错.问题可以解决..有很多方法解决..换个角度还行不行呢..至于那个命名,一再去纠缠不休实在没必要.服务端完全可以按Request.form(name)(i)的方式去访问同名表单域.删除的代码更是简单,一个deleteRow就搞定.试想,如果让你写成一个HTC zz315(钟钟) 这位兄弟的还能不能符合要求呢??
不喜欢写通用性强的代码的人,打个比方来说,在软件工业中,顶多也就算个手工业者,不能算工人.更谈不上工程师.当然写着玩玩,你喜欢这么做也没人拦你..我就喜欢高射炮大蚊子.反正炮弹多.
<tr bgcolor=F0F0F0><td>新图片上传</td><td><div><input type=button onclick=addNew() value=增加 class=button_index><font color=000080>(按一次增加按钮就可以上传一张图片。)</font></div></td></tr><tbody></table></form><script>
var i=0,arr=new Array('F9F9F9','F0F0F0');
function addNew(){
tr=document.all.t136.insertRow();
tr.style.backgroundColor=arr[i%2];
tr.insertCell().innerText="图片"+(++i);
tr.insertCell().innerHTML='<input type=file name=pic'+i+' class=border_index> <a href=javascript:void(0) onclick=del()>删除</a>'
}
function del(){
var f=1;
document.all.t136.deleteRow(window.event.srcElement.parentElement.parentElement.rowIndex);
for(i=0;i<document.all.t136.rows.length-f;i++){
document.all.t136.rows[i+f].cells[0].innerText="图片"+(i+1);
document.all.t136.rows[i+f].cells[1].children[0].name="pic"+(i+1);
document.all.t136.rows[i+f].style.backgroundColor=arr[i%2];
}
}
</script>
function addNewQuestion(){
var t136=form1.all.tags("table")[0]
var o=t136.rows(1);
var r=t136.insertRow();
var l=t136.rows.length
for(i=0;i<o.cells.length;i++){
var c=r.insertCell();
c.innerHTML=o.cells(i).innerHTML
try{
c.children(0).name=c.children(0).name.replace(/\d+$/,"")+(l-1);
c.children(0).value="";
c.children(0).value=c.children(0).name;//调试用,可删去
}catch(e){};
}
}
</script>
表格指为固定布局表.
因为输入的值就是不固定长度的值呀
比如第一行可能输入为:美国
第二行就可能是:中华人民共和国
要让所有列的宽度能随输入的最长字符宽度增加而增加.麻烦的地方就是:加了<div></div>
除非你希望让它作为不可编辑的.那这样的话,用input就显得没有必要了.