注册 登录
编程论坛 J2EE论坛

在一个页面上怎样动态的产生一个新按钮

rongjing 发布于 2007-04-10 18:58, 1476 次点击
在JSP里,有没有这样的方法:我点击一个按钮,就在这个按钮的后面动态的产生另一个按钮,请问,在不重新生成这个页面 的情况下,怎么实现这种效果。
26 回复
#2
支离破碎2007-04-11 09:07
可以选做好一个然后隐藏起来,再用JS让他显示出来。
#3
风月_无边2007-04-11 10:38

ls说的对,用js可以实现。

#4
ILoveMK2007-04-11 10:48
看来js挺有用的啊
#5
angeloc2007-04-11 17:30
用JS和DOM可以动态生成任何元素。
#6
rongjing2007-04-12 09:14
选用隐藏的这种方法在我这个程序里不可取,我这个页面是动态产生的,你们都说到用JS,那JS怎么写呀, 我对JS不熟悉,能举给范例吗?
#7
angeloc2007-04-12 09:29
以下是引用rongjing在2007-4-12 9:14:04的发言:
选用隐藏的这种方法在我这个程序里不可取,我这个页面是动态产生的,你们都说到用JS,那JS怎么写呀, 我对JS不熟悉,能举给范例吗?

JS是很强大的脚本语言,想关内容有很厚一本书。
我给你写个动态生成BUTTON的例子。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script language="javascript">
function insertStr() {
var f = document.form1;

// 从最终的TextNode节点开始,慢慢形成<tbody>结构
var td = document.createElement("td"); //新建一个td类型的Element节点
var tr = document.createElement("tr"); //新建一个tr类型的Element节点
var bn=document.createElement("input");
var tbody = document.createElement("tbody"); //新建一个tbody类型的Element节点
bn.type="button";
bn.value="BUTTON";
td.align="center";
td.appendChild(bn);
tr.appendChild(td); //将节点td加入tr中
tbody.appendChild(tr); //将节点tr加入tbody中
var parNode = document.getElementById("table1"); //定位到table上
parNode.insertBefore(tbody,parNode.firstChild); //将节点tbody插入到节点顶部
//parNode.appendChild(tbody); //将节点tbody加入节点尾部

}
</script>
</head>
<body>
<form name="form1" method="post" action="">
<input name="insert" type="button" id="insert" value="生成BUTTON" onClick="insertStr()">
</form>
<table width="400" border="1" cellspacing="0" cellpadding="0" id="table1">
<tbody>

</tbody>
</table>
</body>
</html>

#8
rongjing2007-04-12 16:16
非常感谢angeloc这位仁兄,这正是我想要的效果,你帮了我一个很大的忙,谢谢你!
#9
rongjing2007-04-12 17:23
这个下拉列表框,动态产生出来只是个空的,我想给它添加内容上去,怎么添加呀,请仁兄再次指点指点吧
#10
rongjing2007-04-12 17:38
我已经知道怎么弄了,原来select里也有text
#11
angeloc2007-04-12 17:41

如果C为下拉列表框节点,用它的OPTIONS添加内容,index为下标
c.options[index] = new Option('1','1' );
c.options[index].selected=true//设置选中

#12
rongjing2007-04-13 08:09
谢谢你,angeloc
#13
rongjing2007-04-13 08:23
angeloc,你上面的option是自己声明的新节点:var option=document.createElement("option");还是是它自己的属性?
#14
angeloc2007-04-13 08:47
是下拉列表自己的属性
#15
rongjing2007-04-13 09:21
不好意思,我问了个白痴问题,我没注意到你那个 option后面加了个s。谢谢你告诉我这个实用的方法。
#16
angeloc2007-04-13 09:22
你太客气了
#17
rongjing2007-04-13 10:13
你现在在了吗?我又有问题想请教你了。在JSP里我用<td>context</td>直接输入字符,那在javascript里声明的td这么做到这种结果呀?
#18
rongjing2007-04-13 11:37
我找到方法了,要用createTextNode声明一个文本节点再加上去
这个节点还真头疼,头都给我弄晕了,你的javasrcipt很厉害
#19
angeloc2007-04-13 12:44
呵呵,你想深入研究的话去看看AJAX的相关资料!
#20
rongjing2007-04-13 15:48
我是想深入研究,可现在没时间,只有用到的东西了解一下就知足了,我现在在做一个项目,用 javascript动态产生是最好的,它不用重新产生页面就能做到,这样的话,在页面上的值就能保存下来,要是用JSP的话,就得重新产生页面一次,这样的话我得把所有值保存下来,这样对服务器的负担实在是很重。对javascript一点都不懂的我,可头疼了。
#21
rongjing2007-04-13 15:53
现在又有问题了,怎么在td里面添加&lt;hr&gt;,&lt;br&gt;,&amp;nbsp;这些标记呀?
#22
神vLinux飘飄2007-04-13 16:07
按照版主的做法就是这样了
var br = document.createElement("br");
td.appendChild(br);
....
#23
rongjing2007-04-13 16:11
恩,是呀,解决了。我被这个javascript都弄晕了
#24
angeloc2007-04-13 23:48
呵呵,是啊,要学会举一反三。你可以把所有你想做的东西尝试下就知道都能出来什么效果了!
#25
rongjing2007-04-16 08:19
我还是在不知道下列表框的行数和列数是怎么设置的,我用的rows,cols,可不行,还有怎么合并单元格,我用th作为tr的下一个节点,再把内容放在th节点里,可是不行,单元格合并不成功,内容也是插在新行的第一列中。
#26
食恶不色2007-04-17 11:05
学习了。。JS是很强大的。。
#27
xxp53107762007-05-18 22:36
你可以用事件驱动式的方法来完成!
1