JS二级级联下拉菜单

木叶下521 2013-08-11 06:37:37
有一个二级级联下拉菜单,但是就是不显示,大侠们看看啥问题?
 <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>

效果图:
...全文
195 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
静静521 2013-08-13
  • 打赏
  • 举报
回复
<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>
楼主看看可以不?
街头小贩 2013-08-12
  • 打赏
  • 举报
回复
最近菜单联动火爆呀。这么多人问
求摸小手 2013-08-12
  • 打赏
  • 举报
回复
数据获取有没有问题,这个你自己去查。 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]);

87,919

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧