已知session中存在两个list。一个是省份(pro),一个是城市(city),都是从数据库中拿出来的。pro类里面有一个city集合属性,city类里面有一个pro属性,多对一双向关联了JSP页面对应两个下拉框,现在想要实现的功能是省份的option值改变后,城市的option自动更新我对JS不熟,只知道可以添加 onchange="js函数",但是这个函数里面具体怎么获得session中的值,又是怎么筛选后往city组件里面增加option的,求高手解决!!
解决方案 »
- 怎么用simpleDateFormate格式化
- 请教:Exception in thread "main" java.lang.NullPointerException at company.insertAe
- AWTEventMulticaster在管理TextListener时出现问题, 请专家解答
- 如何学习J2EE
- 一道简单的算法题
- 字符替换
- 请问java里怎么实现一个文本框,自动换行,没有水平滚动条
- dbswing中的querydataset问题!
- 在jsp中使用javabean不好用
- StringBuffer怎么用?高手进
- Java开发邮件服务器
- 难!!急!!!!一个关于jquery的问题,请求帮助!!!!!!!!!!!!!!!!!!!
<head>
<script language="javascript" type="text/javascript">
var sheng1=new Array("A-A市","A-B市","A-C市","A-D市","A-E市","A-F市","A-G市","A-H市","A-I市");
var sheng2=new Array("B-A市","B-B市","B-C市","B-D市","B-E市","B-F市","B-G市","B-H市","B-I市");
function changeds(){
if(document.getElementById("select").value=="0"){
select2.innerHTML="";
return false;
}
if(document.getElementById("select").value=="1"){
show(sheng1);
}else if(document.getElementById("select").value=="2"){
show(sheng2);
}
return false;
} function show(obj){
var selectxx= document.getElementById("selectx");
var opt;
selectxx.innerHTML="市县";
for(var j=0;j<obj.length;j++){
opt=document.createElement("option");
opt.setAttribute("value",j);
opt.innerHTML=obj[j];
selectxx.appendChild(opt);
}
return true;
}
</script>
<title>
联动菜单
</title></head>
<body>
<form name="form1" method="post" action="" id="form1">
<div>
<select name="select" onchange="return changeds()">
<option value="0" selected>请选择</option>
<option value="1">A省</option>
<option value="2">B省</option>
</select>
<select name="selectx" id="selectx">
<option value="0" >
市县
</option>
<select>
</div>
</form>
</body>
</html>
list中的类之间有关联关系,如何在jsp中拿到这些数据和其中的关联关系。并动态给select增加option
或者<c:forEach>
这个只能在JSP上拿到数据。。但是onclick里面调用的是JS函数,怎么获得这些数据呢
回六楼,这些东西我只是举例子,实际业务上不像省份一样可以写死的,是需要动态拿出来的,还可以增加和删除
List pro= request.getSession.getAttribute("pro");
List city= request.getSession.getAttribute("city");
%>
<script language="javascript" type="text/javascript">
var pro=new Array();var cityName=new Array();
var cityId=new Array();
<%
for(int i=0;i<pro.size();i++){
%>
//初始化省份名称和id
pro["<%=pro.get(i).getProId()%>"]="<%=pro.get(i).getProName()%>";
<%
for(int j=0,k=0;j<city.size();j++){
//如果城市是属于本省
if(city.get(j).getProName().equal(pro.get(i).getProName())){%>
cityName["<%=pro.get(i).getProName()%>"][<%=k%>]=<%=city.get(j).getCityName()%>;
cityId["<%=pro.get(i).getProName()%>"][<%=k%>]=<%=city.get(j).getCityId()%>;
<%
k++;
}
}
%>
<%
}
%>
function addoption(value,show,selectObj){
selectname.options.length=0;
for(var i=0;i<show.length;i++){
var aNewOption=new Option(show[i],value[i]);
selectname.options[selectname.options.length]=aNewOption;
}
}
function changeds(){
if(document.getElementById("select1").value=="0"){
document.getElementById("select2").innerHTML="<option value='0' >市县</option>";
}else{
var index=document.getElementById("select1").text;
addoption(cityId[index],cityName[index],document.getElementById("select2"));
}
}
</script> <select id="select1" onchange="changeds();">
<option value="0" selected>请选择</option>
<%
for(int i=0;i<pro.size();i++){
%>
<option value="<%=city.get(j).getCityId()%>"><%=pro.get(i).getProName()%></option>
<%}%>
</select>
<select id="select2">
<option value="0" >
市县
</option>
<select>
另:把省份和城市信息存入session不妥吧 这样每一个session都保存着这些省市信息 浪费内存啊