没懂你的意思,给个二级联动菜单的例子,自己参考下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> New Document </title> <script language="JavaScript" type="text/javascript"> <!-- //按照省份下拉列表框的顺序定义二维数组,将城市列表对应到省份 var city=[ ["北京","天津","上海","重庆"], //直辖市 ["南京","苏州","南通","常州"], //江苏省 ["福州","福安","龙岩","南平"], //福建省 ["广州","潮阳","潮州","澄海"], //广东省 ["兰州","白银","定西","敦煌"] //甘肃省 ];
function getCity(){ //获得身省份和城市下拉列表框的引用 var sltProvince=document.forms["theForm"].elements["province"]; var sltCity=document.forms["theForm"].elements["city"]; //得到对应于省份的城市列表数组 var provinceCity=city[sltProvince.selectedIndex-1];
function getCity2(){ //获得身省份和城市下拉列表框的引用 var sltProvince=document.forms["theForm"].elements["province"]; //得到省份下拉列表的对象 var sltCity=document.forms["theForm"].elements["city"]; //得到城市下拉列表的对象
if (sltProvince.options[0].value == "0"){ sltProvince.options[0] = null; } //alert(sltProvince.selectedIndex); //得到对应于省份的城市列表数组 var provinceCity=city[sltProvince.selectedIndex];
<html>
<head>
<title> New Document </title>
<script language="JavaScript" type="text/javascript">
<!--
//按照省份下拉列表框的顺序定义二维数组,将城市列表对应到省份
var city=[
["北京","天津","上海","重庆"], //直辖市
["南京","苏州","南通","常州"], //江苏省
["福州","福安","龙岩","南平"], //福建省
["广州","潮阳","潮州","澄海"], //广东省
["兰州","白银","定西","敦煌"] //甘肃省
];
function getCity(){
//获得身省份和城市下拉列表框的引用
var sltProvince=document.forms["theForm"].elements["province"];
var sltCity=document.forms["theForm"].elements["city"];
//得到对应于省份的城市列表数组
var provinceCity=city[sltProvince.selectedIndex-1];
//将城市下拉列表框清空,仅留第一个提示选项
sltCity.length=1;
//将相应省市的城市填充到城市选择框中
for(var i=0;i<provinceCity.length;i++){
//创建新的Option对象并将其添加到城市下拉列表框中
sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]);
}
}
function getCity2(){
//获得身省份和城市下拉列表框的引用
var sltProvince=document.forms["theForm"].elements["province"]; //得到省份下拉列表的对象
var sltCity=document.forms["theForm"].elements["city"]; //得到城市下拉列表的对象
if (sltProvince.options[0].value == "0"){
sltProvince.options[0] = null;
}
//alert(sltProvince.selectedIndex);
//得到对应于省份的城市列表数组
var provinceCity=city[sltProvince.selectedIndex];
//将城市下拉列表框清空,仅留第一个提示选项
sltCity.length=1;
//将相应省市的城市填充到城市选择框中
for(var i=0;i<provinceCity.length;i++){
//创建新的Option对象并将其添加到城市下拉列表框中
sltCity[i]=new Option(provinceCity[i],provinceCity[i]);
}
}
//刷新时使省份还原:
function f5(){
var sltProvince=document.forms["theForm"].elements["province"];
sltProvince.options[0].selected = true;
}
//-->
</script>
</head>
<body onLoad="f5()"><form name="theForm" >
<select name="province" onChange="getCity2()">
<option value="0">请选择所在省份</option>
<option value="直辖市">直辖市</option>
<option value="江苏省">江苏省</option>
<option value="福建省">福建省</option>
<option value="广东省">广东省</option>
<option value="甘肃省">甘肃省</option>
</select>
<select name="city">
<option value="0">请选择所在城市</option>
</select>
</form>
</body>
</html>
传到onchange()函数里处理,并把这个值传到我的项目的Action的addGoodsInfo方法内,并获取到这个值,就行了,然后我就会根据这个id查询到二级分类的信息了,现在我想知道怎么在JavaScript中把这个fType_name获取并转发到我的项目路径下,即:IEshopping/ProductModify!addGoodsInfo.do(Action中的方法)??
function selectinfo()
{
var infos=document.getElementById("fType_name");
var value;
for(var i=0;i<infos.length;i++)
{
if(infos[i].selected==true)
{
value=infos[i].value;
}
}
alert(value);
}</script>
这里的Value就是你想要得的值了吧,之后就看你再去处理一下了
总结一下,和大家分享:
jsp 页面:
<TD width="450">
<select name="fType_name" id="fType_name" onchange="changeValue(this.value);">
<option selected ="selected">一级分类选择</option>
<s:iterator value="listFirst" id="productFirstType">
<option value="<s:property value="fType_id"/>">
<s:property value="fType_name"/>
</option>
</s:iterator>
</select>
</TD>
Action :
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("UTF-8");
int id = Integer.parseInt(request.getParameter("id").trim());
listSconds = goods_infoService.findScondsTypeById(id);
String xml_start = "<sType_names>";
String xml_end = "</sType_names>";
String xml = "";
String last_xml = "";
if(listSconds.size()==0){
xml = "<sType_name><value>0</value><text>目前没有二级分类</text></sType_name>";
last_xml = xml_start + xml + xml_end;
} else {
for (int i = 0; i < listSconds.size(); i++) {
xml += "<sType_name><value>" + listSconds.get(i).getsType_id() + "</value><text>"
+ listSconds.get(i).getsType_name() + "</text></sType_name>";
}
}
last_xml = xml_start + xml + xml_end;
response.getWriter().write(last_xml);
response.getWriter().flush();
response.getWriter().close();
js :
//创建连接,判断浏览器
var http_request = false;
function createXMLHttpRequest() {
if (window.XMLHttpRequest) {
XMLHttpReq = new XMLHttpRequest(); //创建对象对应不同的浏览器
}
else if (window.ActiveXObject) {
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
}
}
}
}
//onchange事件
function changeValue(id) { //当第一个下拉框的选项发生改变时调用该函数
alert("sadfsad");
sendRequest("ProductModify!scondsType.do?id="+id); //发送参数到SERVLET
//值得注意的是URL的servlet地址前面不加“/”并且为小写字母(试验的结论)
}
//发送请求
function sendRequest(url) { //发送函数
createXMLHttpRequest();
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange = progessRequest;//调用相关的XML接受函数
XMLHttpReq.send(null);
}
//判断接收请求
function progessRequest() {
if (XMLHttpReq.readyState == 4) {
if (XMLHttpReq.status == 200) {
var xmlDoc = XMLHttpReq.responseXML; //获取返回的XML文档
var sType_name = xmlDoc.getElementsByTagName("sType_name");//获取XML节点
var obj = document.getElementById("sType_name");//获取第二级菜单的对象
if (obj != null) { //如果不为空就置空
obj.options.length = 0;
}
for ( var i = 0; i < sType_name.length; i++) { //用循环给select中加值
var xValue = sType_name[i].childNodes[0].firstChild.nodeValue;
var xText = sType_name[i].childNodes[1].firstChild.nodeValue;
var option = new Option(xText, xValue);
try {
obj.add(option);
} catch (e) {
}
}
} else {
alert("请求异常" + XMLHttpReq.responseText);
}
}
}
看看这