这是生成的html代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://localhost:8080/cstcmis/"> <title>My JSP 'relation.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" language="javascript">
var depaf=new Array();
var depas;

depaf[1]=院直机关;

depas[1]=new Array(院领导,1);

depas[2]=new Array(综合办公室,1);

depas[3]=new Array(教务办公室,1);

depas[4]=new Array(学生工作办公室,1);

depas[5]=new Array(科技工作办公室,1);

depaf[2]=计算机与信息科学系;

depas[1]=new Array(软件教学团队,2);

depas[2]=new Array(应用教学团队,2);

depas[3]=new Array(实践教学团队,2);

depas[4]=new Array(硬件教学团队,2);

depas[5]=new Array(软件工程教学团队,2);

function   showSubmenu(name){ 
if(name=="teacherName"){ 
document.getElementById("teacherName").style.display=""; 
document.getElementById("courseName").style.display="none"; 
document.getElementById("firstDepa").style.display="none" 
document.getElementById("secondDepa").style.display="none" 
document.getElementById("annualName").style.display="none"; 

if(name=="courseName"){ 
document.getElementById("courseName").style.display=""; 
document.getElementById("teacherName").style.display="none"; 
document.getElementById("firstDepa").style.display="none" 
document.getElementById("secondDepa").style.display="none" 
document.getElementById("annualName").style.display="none"; 

if(name=="department"){ 
showThreeSubmenu(); 
document.getElementById("teacherName").style.display="none"; 
document.getElementById("courseName").style.display="none"; 
document.getElementById("annualName").style.display="none"; 

if(name=="annualName"){ 
document.getElementById("annualName").style.display=""; 
document.getElementById("teacherName").style.display="none"; 
document.getElementById("firstDepa").style.display="none" 
document.getElementById("secondDepa").style.display="none" 
document.getElementById("courseName").style.display="none"; 


function   showThreeSubmenu(){ 
document.getElementById("firstDepa").style.display=""; 
var   str=" <select   id='firstDep' onChange='showSecondDepa(this.value);'> "; 
for(i=1;i <depaf.length+1;i++){ 
str+=" <option   value='i'>"+ depaf[i] +"</option>"; 

str+=" </select> "; 
document.getElementById("secondDepa").innerHTML=str; 
showSecondDepa(); 

function   showSecondDepa(fname){ 
document.getElementById("secondDepa").style.display=""; 
var   i=parseInt(fname); 
var   str=" <select   id='secondDep'> "; 
for(j=1;j<depas.length+1;j++){ 
if(depas[j]==i){
str+=" <option   value='j'>"+depas[j]+"</option> "; 
}

str+=" </select> "; 
document.getElementById("secondDepa").innerHtml=str; 
} </script> 
</head> <body>
<form name="form1" method="post" action="4.jsp">
<table>
<tr>
<td id="add" style="display: none">
<select>
<option value="and">并且</option>
<option value="or">或者</option>
</select>
</td>
<td>
<select id="main" name="main" onChange="showSubmenu(this.value);">
<option value="" selected="selected">请选择</option>
<option value="teacherName">教师姓名</option>
<option value="courseName">课程名称</option>
<option value="department">部门</option>
<option value="annualName">课程年度</option>
</select>
</td>
<td id="relation">
<select id="relationsel">
<option value="=">=</option>
<option value="lt">&lt;</option>
<option value="gt">&gt;</option>
<option value="not">&lt;&gt;</option>
<option value="like">like</option>
</select>
</td>
<td id="firstDepa" style="display: none"></td>
<td id="secondDepa" style="display: none"></td>
<td id="teacherName" style="display: none">
<input name="teacherName" id="teaName" type="text" maxlength="20" />
</td>
<td id="courseName" style="display: none">
<select id="coName">

<option value="vhdl">vhdl</option>

<option value="算法">算法</option>

</select>
</td>
<td id="annualName" style="display: none">
<select id="anName">

<option value="2005-2006">2005-2006</option>

<option value="2006-2007">2006-2007</option>

</select>
</td>
<td>
<input type="button" value="添加" />
</td>
</tr>
<tr>
<td colspan="4">
<textarea rows="10" cols="50" id="text" name="text"></textarea>
</td>
</tr>
</table>
</form>
</body></html>当选择部门时,浏览器报错:depas.length为空或不是对象
请问是哪里错啦?如何改?

解决方案 »

  1.   

    这是jsp文件:
    <%@ page language="java" pageEncoding="gb2312"%>
    <%@ page import="java.sql.*"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
    %>
    <jsp:useBean id="fdepa" class="edu.hrbeu.cstcmis.dao.FirstDepartment"></jsp:useBean>
    <jsp:useBean id="sdepa" class="edu.hrbeu.cstcmis.dao.SecondDepartment"></jsp:useBean>
    <jsp:useBean id="an" class="edu.hrbeu.cstcmis.dao.Annual"></jsp:useBean>
    <jsp:useBean id="cn" class="edu.hrbeu.cstcmis.dao.CourseName"></jsp:useBean>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>"> <title>My JSP 'relation.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript" language="javascript">
    var depaf=new Array();
    var depas;
    <%
    ResultSet depaf_rs=fdepa.FirstDepartmentAllQuery("select * from first_depa");
    while(depaf_rs.next()){
    %>
    depaf[<%=depaf_rs.getInt(1)%>]=<%=depaf_rs.getString(2)%>;
    <%
    ResultSet depas_rs=sdepa.SecondDepartmentAllQuery("select * from second_depa where depaf_id="+depaf_rs.getInt(1));
    int count=1;
    while(depas_rs.next()){
    %>
    depas[<%=count%>]=new Array(<%=depas_rs.getString(3)%>,<%=depaf_rs.getInt(1)%>);
    <%
    count++;
    }
    }
    %>
    function   showSubmenu(name){ 
    if(name=="teacherName"){ 
    document.getElementById("teacherName").style.display=""; 
    document.getElementById("courseName").style.display="none"; 
    document.getElementById("firstDepa").style.display="none" 
    document.getElementById("secondDepa").style.display="none" 
    document.getElementById("annualName").style.display="none"; 

    if(name=="courseName"){ 
    document.getElementById("courseName").style.display=""; 
    document.getElementById("teacherName").style.display="none"; 
    document.getElementById("firstDepa").style.display="none" 
    document.getElementById("secondDepa").style.display="none" 
    document.getElementById("annualName").style.display="none"; 

    if(name=="department"){ 
    showThreeSubmenu(); 
    document.getElementById("teacherName").style.display="none"; 
    document.getElementById("courseName").style.display="none"; 
    document.getElementById("annualName").style.display="none"; 

    if(name=="annualName"){ 
    document.getElementById("annualName").style.display=""; 
    document.getElementById("teacherName").style.display="none"; 
    document.getElementById("firstDepa").style.display="none" 
    document.getElementById("secondDepa").style.display="none" 
    document.getElementById("courseName").style.display="none"; 


    function   showThreeSubmenu(){ 
    document.getElementById("firstDepa").style.display=""; 
    var   str=" <select   id='firstDep' onChange='showSecondDepa(this.value);'> "; 
    for(i=1;i <depaf.length+1;i++){ 
    str+=" <option   value='i'>"+ depaf[i] +"</option>"; 

    str+=" </select> "; 
    document.getElementById("secondDepa").innerHTML=str; 
    showSecondDepa(); 

    function   showSecondDepa(fname){ 
    document.getElementById("secondDepa").style.display=""; 
    var   i=parseInt(fname); 
    var   str=" <select   id='secondDep'> "; 
    for(j=1;j<depas.length+1;j++){ 
    if(depas[j]==i){
    str+=" <option   value='j'>"+depas[j]+"</option> "; 
    }

    str+=" </select> "; 
    document.getElementById("secondDepa").innerHtml=str; 
    } </script> 
    </head> <body>
    <form name="form1" method="post" action="4.jsp">
    <table>
    <tr>
    <td id="add" style="display: none">
    <select>
    <option value="and">并且</option>
    <option value="or">或者</option>
    </select>
    </td>
    <td>
    <select id="main" name="main" onChange="showSubmenu(this.value);">
    <option value="" selected="selected">请选择</option>
    <option value="teacherName">教师姓名</option>
    <option value="courseName">课程名称</option>
    <option value="department">部门</option>
    <option value="annualName">课程年度</option>
    </select>
    </td>
    <td id="relation">
    <select id="relationsel">
    <option value="=">=</option>
    <option value="lt">&lt;</option>
    <option value="gt">&gt;</option>
    <option value="not">&lt;&gt;</option>
    <option value="like">like</option>
    </select>
    </td>
    <td id="firstDepa" style="display: none"></td>
    <td id="secondDepa" style="display: none"></td>
    <td id="teacherName" style="display: none">
    <input name="teacherName" id="teaName" type="text" maxlength="20" />
    </td>
    <td id="courseName" style="display: none">
    <select id="coName">
    <%
    ResultSet co_na_rs = cn
    .CourseNameAllQuery("select * from course_name");
    while (co_na_rs.next()) {
    %>
    <option value="<%=co_na_rs.getString(2)%>"><%=co_na_rs.getString(2)%></option>
    <%
    }
    %>
    </select>
    </td>
    <td id="annualName" style="display: none">
    <select id="anName">
    <%
    ResultSet an_rs = an.AnnualAllQuery("select * from annual");
    while (an_rs.next()) {
    %>
    <option value="<%=an_rs.getString(2)%>"><%=an_rs.getString(2)%></option>
    <%
    }
    %>
    </select>
    </td>
    <td>
    <input type="button" value="添加" />
    </td>
    </tr>
    <tr>
    <td colspan="4">
    <textarea rows="10" cols="50" id="text" name="text"></textarea>
    </td>
    </tr>
    </table>
    </form>
    </body></html>
      

  2.   

    很明显是depas对象不存在啊,或者为空(Null)啊。
      

  3.   

    可是我已经创建名为depas的数组,为什么还说不存在呢?
      

  4.   

    var   depaf=new   Array(); 
    var   depas = new   Array();