问题:
下面的代码是一级栏目改变,联动二级栏目(select option 方式)列表显示。
实现要求:
改为,一级栏目改变列出二级栏目(checkbox方式)
<%@ page contentType="text/html;charset=gbk"%>
<%@ page import="java.util.*"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %><html:html lang="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Welcome access to IAS Test System</title>
</head>
<body>
<%
 int temp = 0;
%> 
 
 <logic:present name="spall" scope="request">
<Script language="javascript">
var subitemlength;
sp_id= new Array();
conn_id=new Array();
conn_name=new Array();

<logic:iterate id="sp" scope="request" name="spall" indexId="ind">
<logic:iterate id="conn" name="sp" property="connections">
  <logic:equal value="0" name="conn" property="connFlag">
sp_id[<%=temp%>]=new Array("${sp.spId}");
conn_id[<%=temp%>]=new Array("${conn.connId}");
conn_name[<%=temp%>]=new Array("${conn.connName}");
<%temp++ ;%>
  </logic:equal>
</logic:iterate>
</logic:iterate>
subitemlength=29;//二级栏目数组的长度
//根据所选一级栏目动态改变所对应的二级栏目
function changSubitem(spid,connid)
{
var subtemp=0;//添加二级栏目时数组的下标
var index=connid.length;
//删除原来二级栏目的选项
    for (i=index-1;i>=0;i--)
  {
     connid.options[i]=null;
      }
    var spindex=spid.selectedIndex;//所选的一级栏目
//添加所选一级栏目所对应的二级栏目
for (i=0;i<subitemlength;i++)
 {
if (spid.options[spindex].value==sp_id[i])
 {
connid.options[subtemp]=new Option(conn_name[i],conn_id[i]);
subtemp=subtemp+1;
 }
 }   
}
</script>
<center><h4><font color="red"><html:errors/></font></h4></center>
<html:form action="script.do" method="post" onsubmit="subchk()"> 
<table width="900" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="773" height="28"><strong>Create Script </strong>:<br></td>
    <td width="127">&nbsp;</td>
  </tr>
  <tr>
    <td height="36">&nbsp;</td>
    <td valign="bottom"><a href="#" onclick="history.back()"><img src="images/returnbutton.gif" width="55" height="24" border="0"></a></td>
  </tr>
</table>
<p>
<table width="900" border="1" align="center" cellpadding="15" cellspacing="0" bordercolor="#CCCCCC">
     <tr>
       <td width="290" height="35">Select Starting Point Name : </td>
       <td width="610">
       <select name="spid"
onchange="changSubitem(document.scriptForm.spid,document.scriptForm.connid)">
<logic:iterate id="sp" name="spall" scope="request">
<option value=${sp.spId } selected>${sp.spName}</option>
</logic:iterate>
</select>
  </td>
     </tr>
     <tr>
       <td height="35">Select Connection Name : </td>
       <td>
       <select name="connid">
</select>
<script language="javascript">
    document.scriptForm.spid[0].selected=true ;
    document.scriptForm.spid.onchange() ;
    </script>
    </td>
     </tr>
     <tr>
       <td height="62" colspan="2"><div align="center">
       <input type="submit" value="Submit" >
       </div></td>
  </tr>
</table>
<input type="hidden" name="status" value="createscript" >
<input type="hidden" name="type" value="1" >
</html:form>
</logic:present>
</body>
</html:html>

解决方案 »

  1.   

    补充说明
    该代码运行在: struts1.2, spring2.0, hibernate3.2环境下, 使用的struts1.2的标签。
    需要改哪个地方?
    1. connid.options[subtemp]=new Option(conn_name[i],conn_id[i]);   好像应该改, 好像是new的select中的一个option.2. 再就是调用的时候,好像应该改。
    <select name="connid">
    </select>
    <script language="javascript">
      document.scriptForm.spid[0].selected=true ;
      document.scriptForm.spid.onchange() ;
      </script> 
      

  2.   

    connid.options.add(new Option(conn_name[i],conn_id[i]));
    document.scriptForm.spid.options[0].selected=true ; 
    document.scriptForm.spid.fireEvent("onchange");
      

  3.   

    hookee:
    按照你说的改了,不过还是下拉框,并且框中无任何内容。
    调用的时候,好像应该改吧, 不应该是select吧? 咋改呢? 真是头疼啊!!!
    <select name="connid">
    </select>