| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1299 人关注过本帖
标题:求助(动态下拉表的问题,在线急等)
只看楼主 加入收藏
a48567653
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-2-16
收藏
 问题点数:0 回复次数:6 
求助(动态下拉表的问题,在线急等)
由一个二级动态下拉列表,属于省份城市联动的那个,要取得列表中的文本值,不能取到城市,为什么,希望大家给解决下。
<SCRIPT LANGUAGE = JavaScript>
var nowPro='--请选择--';
var nowCity="--请选择--";
var pro_City=new Array();
var province='--请选择--,北京市,天津市,河北省,山西省,内蒙古自治区,辽宁省,吉林省,黑龙江省,上海市,江苏省,浙江省,安徽省,福建省,江西省,山东省,河南省,湖北省,湖南省,广东省,广西自治区,海南省,重庆市,四川省,贵州省,云南省,西藏自治区,陕西省,甘肃省,青海省,宁夏自治区,新疆自治区,香港特别行政区,澳门特别行政区,台湾省,其它';
pro_City[0]='--请选择--';
pro_City[1]='北京市';
pro_City[2]='天津市';
pro_City[3]='河北省,石家庄市,唐山市,秦皇岛市,邯郸市,邢台市,保定市,张家口市,承德市,沧州市,廊坊市,衡水市';
pro_City[4]='山西省,太原市,大同市,阳泉市,长治市,晋城市,朔州市,晋中市,运城市,忻州市,临汾市,吕梁市';
pro_City[5]='内蒙古自治区,呼和浩特市,包头市,乌海市,赤峰市,通辽市,鄂尔多斯市,呼伦贝尔市,巴彦淖尔市,乌兰察布市,锡林浩特市,乌兰浩特市';
pro_City[6]='辽宁省,沈阳市,大连市,鞍山市,抚顺市,本溪市,丹东市,锦州市,葫芦岛市,营口市,盘锦市,阜新市,辽阳市,铁岭市,朝阳市';
pro_City[7]='吉林省,长春市,吉林市,四平市,辽源市,通化市,白山市,松原市,白城市,延吉市';
pro_City[8]='黑龙江省,哈尔滨市,齐齐哈尔市,鹤岗市,双鸭山市,鸡西市,大庆市,伊春市,牡丹江市,佳木斯市,七台河市,黑河市,绥化市';
pro_City[9]='上海市';
pro_City[10]='江苏省,南京市,无锡市,徐州市,常州市,苏州市,南通市,连云港市,淮安市,盐城市,扬州市,镇江市,泰州市,宿迁市';
pro_City[11]='浙江省,杭州市,宁波市,温州市,嘉兴市,湖州市,绍兴市,金华市,衢州市,舟山市,台州市,丽水市';
pro_City[12]='安徽省,合肥市,芜湖市,蚌埠市,淮南市,马鞍山市,淮北市,铜陵市,安庆市,黄山市,滁州市,阜阳市,宿州市,巢湖市,六安市,亳州市,池州市,宣城市';
pro_City[13]='福建省,福州市,厦门市,莆田市,三明市,泉州市,漳州市,南平市,龙岩市,宁德市';
pro_City[14]='江西省,南昌市,景德镇市,萍乡市,新余市,九江市,鹰潭市,赣州市,吉安市,宜春市,抚州市,上饶市';
pro_City[15]='山东省,济南市,青岛市,淄博市,枣庄市,东营市,潍坊市,烟台市,威海市,济宁市,泰安市,日照市,莱芜市,德州市,临沂市,聊城市,滨州市,菏泽市';
pro_City[16]='河南省,郑州市,开封市,洛阳市,平顶山市,焦作市,鹤壁市,新乡市,安阳市,濮阳市,许昌市,漯河市,三门峡市,南阳市,商丘市,信阳市,周口市,驻马店市,济源市';
pro_City[17]='湖北省,武汉市,黄石市,襄樊市,十堰市,荆州市,宜昌市,荆门市,鄂州市,孝感市,黄冈市,咸宁市,随州市,恩施市,仙桃市,天门市,潜江市';
pro_City[18]='湖南省,长沙市,株洲市,湘潭市,衡阳市,邵阳市,岳阳市,常德市,张家界市,益阳市,郴州市,永州市,怀化市,娄底市,吉首市';
pro_City[19]='广东省,广州市,深圳市,珠海市,汕头市,韶关市,佛山市,江门市,湛江市,茂名市,肇庆市,惠州市,梅州市,汕尾市,河源市,阳江市,清远市,东莞市,中山市,潮州市,揭阳市,云浮市';
pro_City[20]='广西自治区,南宁市,柳州市,桂林市,梧州市,北海市,防城港市,钦州市,贵港市,玉林市,百色市,贺州市,河池市,来宾市,崇左市';
pro_City[21]='海南省,海口市,三亚市';
pro_City[22]='重庆市';
pro_City[23]='四川省,成都市,自贡市,攀枝花市,泸州市,德阳市,绵阳市,广元市,遂宁市,内江市,乐山市,南充市,宜宾市,广安市,达州市,眉山市,雅安市,巴中市,资阳市,西昌市';
pro_City[24]='贵州省,贵阳市,六盘水市,遵义市,安顺市,铜仁市,毕节市,兴义市,凯里市,都匀市';
pro_City[25]='云南省,昆明市,曲靖市,玉溪市,保山市,昭通市,丽江市,思茅市,临沧市,景洪市,楚雄市,大理市,潞西市';
pro_City[26]='西藏自治区,拉萨市,日喀则市';
pro_City[27]='陕西省,西安市,铜川市,宝鸡市,咸阳市,渭南市,延安市,汉中市,榆林市,安康市,商洛市';
pro_City[28]='甘肃省,兰州市,金昌市,白银市,天水市,嘉峪关市,武威市,张掖市,平凉市,酒泉市,庆阳市,定西市,陇南市,临夏市,合作市';
pro_City[29]='青海省,西宁市,德令哈市,格尔木市';
pro_City[30]='宁夏自治区,银川市,石嘴山市,吴忠市,固原市,中卫市';
pro_City[31]='新疆自治区,乌鲁木齐市,克拉玛依市,吐鲁番市,哈密市,和田市,阿克苏市,喀什市,阿图什市,库尔勒市,昌吉市,博乐市,伊宁市,塔城市,阿勒泰市,石河子市,阿拉尔市,图木舒克市,五家渠市,';
pro_City[32]='香港特别行政区';
pro_City[33]='澳门特别行政区';
pro_City[34]='台湾省,台北市,高雄市,基隆市,台中市,台南市,新竹市,嘉义市';
pro_City[35]='其它';

function setup(){
 var Array_city;
 var Array_province;
 Array_province=province.split(',');
 for(i=0;i<Array_province.length;i++){
  document.all("province").options.add(new Option(Array_province[i],i));
  if(nowPro==Array_province[i]){
   document.all("province")[i].selected=true;
   Array_city=pro_City[i].split(',');
   if(Array_city.length>1){
    for(j=0;j<Array_city.length;j++){
     document.all("city").options.add(new Option(Array_city[j],j));
     if(nowCity==Array_city[j]){document.all("city")[j].selected=true;}
    }
   }else{
    document.all("city").options.add(new Option(pro_City[i],0));
   }
  }
 }
}

function on_pro_select_change(){
 var nowSelectIndex=document.all("province").selectedIndex;
 for(i=document.all("city").length-1;i>=0;i--){document.all("city").options.remove(i);}
 var Array_city=pro_City[nowSelectIndex].split(',');
   if(Array_city.length>1){
    for(j=1;j<Array_city.length;j++){
     document.all("city").options.add(new Option(Array_city[j],j));
     if(nowCity==Array_city[j]){document.all("city")[j].selected=true;}
    }
   }else{
    document.all("city").options.add(new Option(pro_City[nowSelectIndex],0));
   }
}
function on_city_change(){
 showCity.innerText=document.all("province")[document.all("province").selectedIndex].innerText+':'+document.all("city")[document.all("city").selectedIndex].innerText;
  document.frm.txt.value=document.frm.city.options[document.frm.city.selectedIndex].innerText;
}
</SCRIPT>
</head>
<body bgcolor="#E0E0E0" onLoad="setup()">
多级关联菜单:
<form name="frm">
省份<select name="province" id="province" onChange="on_pro_select_change()">

</select>
城市<select name="city" id="city" onChange="on_city_change()">

</select>

<input type="text" name="txt" id="txt"/>
</form>
</body>
搜索更多相关主题的帖子: 动态 在线 
2008-10-22 12:39
a48567653
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-2-16
收藏
得分:0 
没人吗?希望大家帮帮忙嘛~
2008-10-22 13:36
hugeannex
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:483
专家分:911
注 册:2005-3-20
收藏
得分:0 
这种一大堆代码的我一般都不看.
过...

世事如潮我如水,只叹江湖几人回。
2008-10-22 14:08
frankqnj
Rank: 4
等 级:贵宾
威 望:12
帖 子:320
专家分:278
注 册:2008-4-6
收藏
得分:0 
我似乎看到了document.all .. 看来只能在ie中用? 如果有分支语句做 浏览器检测.
那也说明 这个菜单  是很古老的东西了 即使不用自己的类库 或第三方类库 的方法
至少也用下 document.getElementById() 吧?

其他的同楼上.. 太长.  谁有时间 给仔细看看吧
2008-10-22 15:34
编程之星
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:285
专家分:391
注 册:2007-4-10
收藏
得分:0 
我对LZ的其中一个函数代码作了修改,可以运行了,也许也是LZ需要的结果,但是核心代码却没有更改过,也就是说,对于LZ的这种解题思路,我还没有理清,也许我太笨了,也许也带有一点懒惰的原因吧。试着运行下面的代码看看,然后再看看下面我给LZ的一点建议(其实我很菜的,哈哈)
程序代码:
<SCRIPT LANGUAGE = JavaScript>
var nowPro='--请选择--';
var nowCity="--请选择--";
var pro_City=new Array();
var province='--请选择--,北京市,天津市,河北省,山西省,内蒙古自治区,辽宁省,吉林省,黑龙江省,上海市,江苏省,浙江省,安徽省,福建省,江西省,山东省,河南省,湖北省,湖南省,广东省,广西自治区,海南省,重庆市,四川省,贵州省,云南省,西藏自治区,陕西省,甘肃省,青海省,宁夏自治区,新疆自治区,香港特别行政区,澳门特别行政区,台湾省,其它';
pro_City[0]='--请选择--';
pro_City[1]='北京市';
pro_City[2]='天津市';
pro_City[3]='河北省,石家庄市,唐山市,秦皇岛市,邯郸市,邢台市,保定市,张家口市,承德市,沧州市,廊坊市,衡水市';
pro_City[4]='山西省,太原市,大同市,阳泉市,长治市,晋城市,朔州市,晋中市,运城市,忻州市,临汾市,吕梁市';
pro_City[5]='内蒙古自治区,呼和浩特市,包头市,乌海市,赤峰市,通辽市,鄂尔多斯市,呼伦贝尔市,巴彦淖尔市,乌兰察布市,锡林浩特市,乌兰浩特市';
pro_City[6]='辽宁省,沈阳市,大连市,鞍山市,抚顺市,本溪市,丹东市,锦州市,葫芦岛市,营口市,盘锦市,阜新市,辽阳市,铁岭市,朝阳市';
pro_City[7]='吉林省,长春市,吉林市,四平市,辽源市,通化市,白山市,松原市,白城市,延吉市';
pro_City[8]='黑龙江省,哈尔滨市,齐齐哈尔市,鹤岗市,双鸭山市,鸡西市,大庆市,伊春市,牡丹江市,佳木斯市,七台河市,黑河市,绥化市';
pro_City[9]='上海市';
pro_City[10]='江苏省,南京市,无锡市,徐州市,常州市,苏州市,南通市,连云港市,淮安市,盐城市,扬州市,镇江市,泰州市,宿迁市';
pro_City[11]='浙江省,杭州市,宁波市,温州市,嘉兴市,湖州市,绍兴市,金华市,衢州市,舟山市,台州市,丽水市';
pro_City[12]='安徽省,合肥市,芜湖市,蚌埠市,淮南市,马鞍山市,淮北市,铜陵市,安庆市,黄山市,滁州市,阜阳市,宿州市,巢湖市,六安市,亳州市,池州市,宣城市';
pro_City[13]='福建省,福州市,厦门市,莆田市,三明市,泉州市,漳州市,南平市,龙岩市,宁德市';
pro_City[14]='江西省,南昌市,景德镇市,萍乡市,新余市,九江市,鹰潭市,赣州市,吉安市,宜春市,抚州市,上饶市';
pro_City[15]='山东省,济南市,青岛市,淄博市,枣庄市,东营市,潍坊市,烟台市,威海市,济宁市,泰安市,日照市,莱芜市,德州市,临沂市,聊城市,滨州市,菏泽市';
pro_City[16]='河南省,郑州市,开封市,洛阳市,平顶山市,焦作市,鹤壁市,新乡市,安阳市,濮阳市,许昌市,漯河市,三门峡市,南阳市,商丘市,信阳市,周口市,驻马店市,济源市';
pro_City[17]='湖北省,武汉市,黄石市,襄樊市,十堰市,荆州市,宜昌市,荆门市,鄂州市,孝感市,黄冈市,咸宁市,随州市,恩施市,仙桃市,天门市,潜江市';
pro_City[18]='湖南省,长沙市,株洲市,湘潭市,衡阳市,邵阳市,岳阳市,常德市,张家界市,益阳市,郴州市,永州市,怀化市,娄底市,吉首市';
pro_City[19]='广东省,广州市,深圳市,珠海市,汕头市,韶关市,佛山市,江门市,湛江市,茂名市,肇庆市,惠州市,梅州市,汕尾市,河源市,阳江市,清远市,东莞市,中山市,潮州市,揭阳市,云浮市';
pro_City[20]='广西自治区,南宁市,柳州市,桂林市,梧州市,北海市,防城港市,钦州市,贵港市,玉林市,百色市,贺州市,河池市,来宾市,崇左市';
pro_City[21]='海南省,海口市,三亚市';
pro_City[22]='重庆市';
pro_City[23]='四川省,成都市,自贡市,攀枝花市,泸州市,德阳市,绵阳市,广元市,遂宁市,内江市,乐山市,南充市,宜宾市,广安市,达州市,眉山市,雅安市,巴中市,资阳市,西昌市';
pro_City[24]='贵州省,贵阳市,六盘水市,遵义市,安顺市,铜仁市,毕节市,兴义市,凯里市,都匀市';
pro_City[25]='云南省,昆明市,曲靖市,玉溪市,保山市,昭通市,丽江市,思茅市,临沧市,景洪市,楚雄市,大理市,潞西市';
pro_City[26]='西藏自治区,拉萨市,日喀则市';
pro_City[27]='陕西省,西安市,铜川市,宝鸡市,咸阳市,渭南市,延安市,汉中市,榆林市,安康市,商洛市';
pro_City[28]='甘肃省,兰州市,金昌市,白银市,天水市,嘉峪关市,武威市,张掖市,平凉市,酒泉市,庆阳市,定西市,陇南市,临夏市,合作市';
pro_City[29]='青海省,西宁市,德令哈市,格尔木市';
pro_City[30]='宁夏自治区,银川市,石嘴山市,吴忠市,固原市,中卫市';
pro_City[31]='新疆自治区,乌鲁木齐市,克拉玛依市,吐鲁番市,哈密市,和田市,阿克苏市,喀什市,阿图什市,库尔勒市,昌吉市,博乐市,伊宁市,塔城市,阿勒泰市,石河子市,阿拉尔市,图木舒克市,五家渠市,';
pro_City[32]='香港特别行政区';
pro_City[33]='澳门特别行政区';
pro_City[34]='台湾省,台北市,高雄市,基隆市,台中市,台南市,新竹市,嘉义市';
pro_City[35]='其它';

function setup(){
var Array_city;
var Array_province;
Array_province=province.split(',');
for(i=0;i<Array_province.length;i++){
  document.all("province").options.add(new Option(Array_province[i],i));
  if(nowPro==Array_province[i]){
   document.all("province")[i].selected=true;
   Array_city=pro_City[i].split(',');
   if(Array_city.length>1){
    for(j=0;j<Array_city.length;j++){
     document.all("city").options.add(new Option(Array_city[j],j));
     if(nowCity==Array_city[j]){document.all("city")[j].selected=true;}
    }
   }else{
    document.all("city").options.add(new Option(pro_City[i],0));
   }
  }
}
}

function on_pro_select_change(){
var nowSelectIndex=document.all("province").selectedIndex;
for(i=document.all("city").length-1;i>=0;i--){document.all("city").options.remove(i);}
var Array_city=pro_City[nowSelectIndex].split(',');
   if(Array_city.length>1){
    for(j=1;j<Array_city.length;j++){
     document.all("city").options.add(new Option(Array_city[j],j));
     if(nowCity==Array_city[j]){document.all("city")[j].selected=true;}
    }
   }else{
    document.all("city").options.add(new Option(pro_City[nowSelectIndex],0));
   }
}
function on_city_change(){
  /*    
    修改了你的这个函数代码
    看看是否需要这样的效果
    我还没有完全理清你的解题思路 -_-||   
  */
  var p=document.getElementById("province");
  var c=document.getElementById("city");
  var t=document.getElementById("txt");
  t.value=p.options[p.selectedIndex].text+":"+c.options[c.selectedIndex].text;
}
</SCRIPT>
</head>
<body bgcolor="#E0E0E0" onLoad="setup()">
多级关联菜单:
<form name="frm">
省份<select name="province" id="province" onChange="on_pro_select_change()">

</select>
城市<select name="city" id="city" onChange="on_city_change()">

</select>

<input id="txt" name="txt"  type="text" >
</form>
</body>



[bo]建议[/bo]

面对多数问题我们首先应该想到的是--将问题简单化.
我觉得KISS(Keep It Simple Sweety)[It代表代码]编程规则还是挺好用的.
如果LZ采用二维数组的话就可以省略很多代码.
下面给段刚写的代码你看看:
程序代码:
<script>
var arr=new Array();
arr["软件开发"]=new Array();
arr["软件开发"]=["C","C++","JAVA","VB","汇编"];
arr["网页开发"]=new Array();
arr["网页开发"]=["PHP","JSP","ASP","DHTML","JAVASCRIPT","AJAX"];
arr["网页美工"]=new Array();
arr["网页美工"]=["FLASH","PHTOSHOP","FIREWORK"];
function change(flag)
{  
  var Superitem=document.getElementById("ite");
  var Subitem=document.getElementById("ite2");
  if(flag==1)
  {
    //while循环用来清除前一次联动后产生的多余项目
    while(Subitem.length!=0)
    {
      Subitem.remove(0);
    }
    for(var i=0;i<arr[Superitem.value].length;i++)
    {
      Subitem.options[i]=new Option(arr[Superitem.value][i]);
    }
  }else{
    document.getElementById("txt").value=Subitem.options[Subitem.selectedIndex].text
  }
}
</script>
<body>
<select id="ite" onchange="change(1)">
<option value="软件开发">软件开发
<option value="网页开发">网页开发
<option value="网页美工">网页美工
</select>
<select id="ite2" onchange="change(2)">
<option value="">二级联动菜单
</select>
<input id="txt" type="text">
</body>


[[it] 本帖最后由 编程之星 于 2008-10-22 16:40 编辑 [/it]]

怎么越学就觉得自己越笨
2008-10-22 15:45
frankqnj
Rank: 4
等 级:贵宾
威 望:12
帖 子:320
专家分:278
注 册:2008-4-6
收藏
得分:0 
楼上 辛苦啦!
2008-10-22 17:09
a48567653
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-2-16
收藏
得分:0 
谢谢大家了,问题已经解决了
2008-10-22 17:15
快速回复:求助(动态下拉表的问题,在线急等)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053154 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved