读书人

JS二级级联下拉菜单,该如何处理

发布时间: 2013-08-14 14:27:55 作者: rapoo

JS二级级联下拉菜单
有一个二级级联下拉菜单,但是就是不显示,大侠们看看啥问题?

 <tr>
<td align="right">学院:</td>
<td><select name="role" onBlur="checkRole(this)" onchange="populateMajor(this.options[this.selectedIndex].value)">
<option value="0">-请选择学院-</option>
<%
List<Department> list = new ArrayList<Department>();
DepartmentDao dao = new DepartmentDaoImpl();
list = dao.findAllDepartments();// 调用实现类的查询全部方法
for (int i = 0; i < list.size(); i++) {
Department d = list.get(i);
%>
<option value="<%=d.getD_id()%>"><%=d.getD_name()%></option>
<%
}
%>
</select>
<!--级联二级菜单 -->

<%
List<MajorAndClass> list1 = new ArrayList<MajorAndClass>();
MajorAndClassDao mdao = new MajorAndClassDaoImpl();
list1 = mdao.findAllMajorAndClass();// 调用实现类的查询全部方法
%>
<script type="text/javascript">
var onecount=0;//定义一个变量,记录Major个数
var listMajor= new Array();//定义一个数组,记录Major内容
<%
int count = 0;//listMajor下标
for (int i = 0; i < list1.size(); i++) {
MajorAndClass m = list1.get(i);
%>
listMajor[<%=count%>]= new Array(<%=m.getName()%>,<%=m.getM_id()%>,<%=m.getDepartment().getD_id()%>);//把list数据放入listMajor数组
<%count++;

}%>
onecount=<%=count%>;
function populateMajor(dID){//显示二级菜单Major
document.getElementById("major").options.length=0;

if(dID!=""){
var dID=parseInt(dID);

for(var i=0;i<onecount;i++)
{
if(listMajor[i][2]==dID)
{

document.getElementById("major").options[i]=new Option[listMajor[i][0],listMajor[i][1]];
}
}
}
}
</script>

</td>
<td>
<select id="major" name="major">
<option value="0" selected>-请选择专业-</option>
</select>
</td>



</tr>


效果图:JS二级级联下拉菜单,该如何处理 JavaScript JSP
[解决办法]
数据获取有没有问题,这个你自己去查。
JS方面有有一处问题:
document.getElementById("major").options[i]=new Option[listMajor[i][0],listMajor[i][1]];
请改成:
document.getElementById("major").options[i]=new Option(listMajor[i][0],listMajor[i][1]);
[解决办法]
<script type="text/javascript"> 
var listMajor = new Array();
<%
for (int i = 0; i < list1.size(); i++) {
MajorAndClass m = list1.get(i);
%>
listMajor.push(['<%=m.getName()%>',<%=m.getM_id()%>,<%=m.getDepartment().getD_id()%>]);
<% } %>

function changelocation(dID)
{
document.getElementById('major').innerHTML ='';
var fragment = document.createDocumentFragment();
for(var i =0;i<listMajor.length;i++){
if(listMajor[i][2] == dID) {
var option = document.createElement("option");
option.value = listMajor[i][1];
option.innerHTML = listMajor[i][0];
fragment.appendChild(option);
}
}

document.getElementById('major').appendChild(fragment);
}
</script>

楼主看看可以不?

读书人网 >JavaScript

热点推荐