我在ACTION中查询了某个表,然后把记录的内容存在LIST类型变量Partner中,然后跳转到下边的页面现在我需要把Partner中的某个属性,绑定到SELECT,并通过某个按钮能动态的生成N个SELECT,下边是我的代码,运行后提示的是无法创建集合。
<html:html>
<body>
<script type="text/javascript">
function addline()
{
newline=document.all.addPartner.insertRow();
newline.insertCell().innerHTML=
"<select name='select["+(document.all.addPartner.rows.length-1)+"]'>"+
"<logic:iterate id='Partner' name='Partner'>"+
"<option value='${Partner.partnerName}'>"+
"<bean:write name='Partner' property='partnerName'/>"+
"</option>"+
"</logic:iterate>"+
"</select>"+
"<input type='text' name='tt["+(document.all.addPartner.rows.length-1)+"]'>"+
"<input type='button' value='删除' onclick='del()'>"
}
function del()
{
document.all.addPartner.deleteRow(window.event.srcElement.parentElement.parentElement.rowIndex);
}
</script>
<html:form action="/addProduct" method="post">
<input type="button" onclick="addline()" value="增加">
<table id="addPartner">
<tr>
<td>
<select name="select">
<logic:iterate id="Partner" name="Partner">
<option value="${Partner.partnerName}">
<bean:write name="Partner" property="partnerName"/>
</option>
</logic:iterate>
</select>
<input type="text" name="fe"/>
</td>
</tr>
</table>
</html:form>
<body>
</html:html>难道是struts标签不能嵌套在JS之中么???请高手帮忙解释解释,也请教下我这个该怎么实现.
<html:html>
<body>
<script type="text/javascript">
function addline()
{
newline=document.all.addPartner.insertRow();
newline.insertCell().innerHTML=
"<select name='select["+(document.all.addPartner.rows.length-1)+"]'>"+
"<logic:iterate id='Partner' name='Partner'>"+
"<option value='${Partner.partnerName}'>"+
"<bean:write name='Partner' property='partnerName'/>"+
"</option>"+
"</logic:iterate>"+
"</select>"+
"<input type='text' name='tt["+(document.all.addPartner.rows.length-1)+"]'>"+
"<input type='button' value='删除' onclick='del()'>"
}
function del()
{
document.all.addPartner.deleteRow(window.event.srcElement.parentElement.parentElement.rowIndex);
}
</script>
<html:form action="/addProduct" method="post">
<input type="button" onclick="addline()" value="增加">
<table id="addPartner">
<tr>
<td>
<select name="select">
<logic:iterate id="Partner" name="Partner">
<option value="${Partner.partnerName}">
<bean:write name="Partner" property="partnerName"/>
</option>
</logic:iterate>
</select>
<input type="text" name="fe"/>
</td>
</tr>
</table>
</html:form>
<body>
</html:html>难道是struts标签不能嵌套在JS之中么???请高手帮忙解释解释,也请教下我这个该怎么实现.
希望给你点提示参考而已。。
<%@ taglib uri="....struts-logic" prefix="logic">
<%@ taglib uri="....struts-bean" prefix="bean">
可以用dom来生成select,在页面中生成struts标签是不可能动态生成HTML的
建议你用dwr或者json返回一个对象,再循环生成,生成代码我写好了,可以直接运行
要加分哦MM - _ -
<html>
<head>
<script>
var item = 0;
function addSelect()
{
var selectDiv=document.getElementById('selectfrom');
if(item==0)
{
while(selectDiv.firstChild)
{
selectDiv.removeChild(selectDiv.firstChild);
}
}
item = 1;
var selectinput=document.createElement("select"); optioninput=document.createElement("option"); optioninput.appendChild(document.createTextNode("我是值")); //在这里可以使用循环添加子值 selectinput.appendChild(optioninput); selectDiv.appendChild(selectinput); document.getElementById('selectfrom').style.display="";
}
</script>
</head>
<body>
<input type="button" value="添加" onClick="addSelect()">
<div id="selectfrom" style="display:none">
数据加载中。
</div>
</body>
</html>
汗汗。
5点多了,下班闪人了,记得结贴哦
- _ -
js是在客户端的浏览器里执行的!
而struts标签要通过服务器的转换成HTML再发送到客户端的先把全部数据读出来放在js的数组里!
因为也是没学过你讲的我好多都没学到
新买的AJAX书还没翻过,汗汗
最后我自己是用了下边的方法解决~~
总算好了~~~
谢谢各位了~~
<script type="text/javascript">
<%
String name[]=(String [])request.getAttribute("name");
String id[]=(String [])request.getAttribute("id");
String str="";
for(int i=0;i<name.length;i++)
{
str=str+"<option value='"+id[i]+"'>"+name[i]+"</option>";
}
%>
var str1="<%=str%>";
function addline()
{
newline=document.all.addPartner.insertRow();
newline.insertCell().innerHTML="<select name='s["+
(document.all.addPartner.rows.length-1)+
"]'>"+str1+"</select>"+
"<input type='text' name='tt["+(document.all.addPartner.rows.length-1)+"]'>"+
"<input type='button' value='删除' onclick='del()'>"
}
function del()
{
document.all.addPartner.deleteRow(window.event.srcElement.parentElement.parentElement.rowIndex);
}
</script>