我想要实现这样一个功能...有一个两级联动,
<select id = "" name = ""> <option>第一级</option></select>  
<select id = "" name = ""> <option>第二级</option></select>下面有一个添加按钮,当点击添加按钮时,在下面再添加上面相同的两级联动,再点击时又添加一个,依此类推...我想要请教大家的是:当我添加了一个新的两级联动的时候  这个两级联动的代码怎么实现,后面添加的两级联动也要实现..我想知道实现的思路是怎么样,如果有源码就更好。。比较急..  PS: 第一个两级联动我已经实现 谢谢大家了

解决方案 »

  1.   

    社区支持-CSDN Blog 支持专区  是一个已经关闭了的版块 不解决技术问题。建议自行移动帖子到web开发板块。
      

  2.   

    先把2级联动的逻辑封装成一个对象,‘’创建新的,重新new一个就可以了!<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
        <title> </title>
    </head>
    <body>
    <a href="javascript:;" onclick="add()">添加</a>
    <p >省:<select  id='slcProvince'></select>市:<select  id='slcCity'></select>  </p> <p >省:<select  id='Select1'></select>市:<select  id='Select2'></select>  </p> 
    <p >省:<select  id='Select3'></select>市:<select  id='Select4'></select>  </p> 
    </body>
    <script type="text/javascript">    
       
    var __provinceAndCity = null;
    window.onload=function (){
            __provinceAndCity = new __ProvinceAndCityClass($("slcProvince"),$("slcCity"));        new __ProvinceAndCityClass($("Select1"),$("Select2"));
             new __ProvinceAndCityClass($("Select3"),$("Select4"));
           include("http://fw.qq.com/ipaddress?t="+Math.random(),'gb2312',function(){
              // IPData[0] ip     IPData[2] 省     IPData[3] 市
               __provinceAndCity.selectProvince.value = IPData[2];
               __provinceAndCity.SlcProvinceChanged();
               __provinceAndCity.selectCity.value = IPData[3];
           });
          
    };
    function add(){
    var div= document.createElement("div");
    div.innerHTML = "省:<select  ></select>市:<select></select>";
    document.body.appendChild(div);
    setTimeout(function(){
    var slcs = $$("select",div);
    new __ProvinceAndCityClass(slcs[0],slcs[1]);
    },500);
    }var $ = function (id,obj) {  
        obj = obj|| document;
        return "string" == typeof id ? obj.getElementById(id) : id;   
    };  
    var $$ = function (name,obj) {  
        obj = obj|| document;
        return "string" == typeof name ? obj.getElementsByTagName(name) : name;   
    };  
     
     // 动态导入js
    function include(src,encoding,fun) 

        var s = document.createElement('script');   
        s.type='text/javascript';
        s.charset=encoding; //'gb2312';
        s.src = src;   
        var tags =$$('head');   
       if(typeof(fun)=='function'){
            if( document.all ){
               s.onreadystatechange = function(){
                    if(/(complete|loaded)/.test(this.readyState)){
                          fun(); s.onreadystatechange = null; s.parentNode.removeChild(s); 
                     }};
           }else{
                 s.onload = function(){  fun(); s.onload = null; s.parentNode.removeChild(s); };
           }
        } 
        tags[0].appendChild(s); 
    };function __ProvinceAndCityClass(slcProvince,slcCity)
    {
        this.selectProvince = slcProvince;
        this.selectCity = slcCity;
        this.InitData();
    }
    __ProvinceAndCityClass.prototype.SlcProvinceChanged = function()
        {
            var obj=this;
            var provinceIndex = obj.selectProvince.selectedIndex;
            obj.selectCity.options.length = 0;   
             for(var index=0;index< obj.CityList[provinceIndex].length;index++)
            {
                obj.selectCity.options.add(new Option(obj.CityList[provinceIndex][index],obj.CityList[provinceIndex][index]));
            }
            obj.selectCity.value = obj.CityList[provinceIndex][0];
        };__ProvinceAndCityClass.prototype.InitData=function()
        {
           var obj = this;
          //初始化数据
           
            for(var index=0;index< obj.ProvinceList.length;index++)
            {
                obj.selectProvince.options.add(new Option(obj.ProvinceList[index],obj.ProvinceList[index]));
            }
            obj.selectProvince.value = obj.ProvinceList[0];
            obj.selectProvince.onchange =function(){ obj.SlcProvinceChanged.call(obj)}; 
            obj.SlcProvinceChanged.call(obj); 
        };__ProvinceAndCityClass.prototype.ProvinceList=["北京市","天津市","上海市","重庆市","河北省","山西省","台湾省","辽宁省","吉林省","黑龙江省","江苏省", "浙江省","安徽省","福建省","江西省","山东省",
         "河南省","湖北省","湖南省","广东省","甘肃省","四川省","贵州省","海南省","云南省","青海省","陕西省","广西","西藏","宁夏","新疆","内蒙","澳门","香港","国外与其它"];
      __ProvinceAndCityClass.prototype.CityList=
        [
            ["北京市"],["天津市"],["上海市"],["重庆市"],
            ["石家庄市","唐山市","秦皇岛市","邯郸市","邢台市","保定市","张家口市","承德市","沧州市","廊坊市","衡水市"],
            ["太原市","大同市","阳泉市","长治市","晋城市","朔州市","晋中市","运城市","忻州市","临汾市","吕梁市"],
            ["台北市","高雄市","基隆市","台中市","台南市","新竹市","嘉义市","台北县","宜兰县","桃园县","新竹县","苗栗县","台中县","彰化县","南投县","云林县","嘉义县","台南县","高雄县","屏东县","澎湖县","台东县","花莲县"],
            ["沈阳市","大连市","鞍山市","抚顺市","本溪市","丹东市","锦州市","营口市","阜新市","辽阳市","盘锦市","铁岭市","朝阳市","葫芦岛市"],
            ["长春市","吉林市","四平市","辽源市","通化市","白山市","松原市","白城市","延边朝鲜族自治州"],
            ["哈尔滨市","齐齐哈尔市","鹤岗市","双鸭山市","鸡西市","大庆市","伊春市","牡丹江市","佳木斯市","七台河市","黑河市","绥化市","大兴安岭地区"],
            ["南京市","无锡市","徐州市","常州市","苏州市","南通市","连云港市","淮安市","盐城市","扬州市","镇江市","泰州市","宿迁市"],
            ["杭州市","宁波市","温州市","嘉兴市","湖州市","绍兴市","金华市","衢州市","舟山市","台州市","丽水市"],
            ["合肥市","芜湖市","蚌埠市","淮南市","马鞍山市","淮北市","铜陵市","安庆市","黄山市","滁州市","阜阳市","宿州市","巢湖市","六安市","亳州市","池州市","宣城市"],
            ["福州市","厦门市","莆田市","三明市","泉州市","漳州市","南平市","龙岩市","宁德市"],
            ["南昌市","景德镇市","萍乡市","九江市","新余市","鹰潭市","赣州市","吉安市","宜春市","抚州市","上饶市"],
            ["济南市","青岛市","淄博市","枣庄市","东营市","烟台市","潍坊市","济宁市","泰安市","威海市","日照市","莱芜市","临沂市","德州市","聊城市","滨州市","菏泽市"],
            ["郑州市","开封市","洛阳市","平顶山市","安阳市","鹤壁市","新乡市","焦作市","濮阳市","许昌市","漯河市","三门峡市","南阳市","商丘市","信阳市","周口市","驻马店市","济源市"],
            ["武汉市","黄石市","十堰市","荆州市","宜昌市","襄樊市","鄂州市","荆门市","孝感市","黄冈市","咸宁市","随州市","仙桃市","天门市","潜江市","神农架林区","恩施土家族苗族自治州"],
            ["长沙市","株洲市","湘潭市","衡阳市","邵阳市","岳阳市","常德市","张家界市","益阳市","郴州市","永州市","怀化市","娄底市","湘西土家族苗族自治州"],
            ["广州市","深圳市","珠海市","汕头市","韶关市","佛山市","江门市","湛江市","茂名市","肇庆市","惠州市","梅州市","汕尾市","河源市","阳江市","清远市","东莞市","中山市","潮州市","揭阳市","云浮市"],
            ["兰州市","金昌市","白银市","天水市","嘉峪关市","武威市","张掖市","平凉市","酒泉市","庆阳市","定西市","陇南市","临夏回族自治州","甘南藏族自治州"],
            ["成都市","自贡市","攀枝花市","泸州市","德阳市","绵阳市","广元市","遂宁市","内江市","乐山市","南充市","眉山市","宜宾市","广安市","达州市","雅安市","巴中市","资阳市","阿坝藏族羌族自治州","甘孜藏族自治州","凉山彝族自治州"],
            ["贵阳市","六盘水市","遵义市","安顺市","铜仁地区","毕节地区","黔西南布依族苗族自治州","黔东南苗族侗族自治州","黔南布依族苗族自治州"],
            ["海口市","三亚市","五指山市","琼海市","儋州市","文昌市","万宁市","东方市","澄迈县","定安县","屯昌县","临高县","白沙黎族自治县","昌江黎族自治县","乐东黎族自治县","陵水黎族自治县","保亭黎族苗族自治县","琼中黎族苗族自治县"],
            ["昆明市","曲靖市","玉溪市","保山市","昭通市","丽江市","思茅市","临沧市","文山壮族苗族自治州","红河哈尼族彝族自治州","西双版纳傣族自治州","楚雄彝族自治州","大理白族自治州","德宏傣族景颇族自治州","怒江傈傈族自治州","迪庆藏族自治州"],
            ["西宁市","海东地区","海北藏族自治州","黄南藏族自治州","海南藏族自治州","果洛藏族自治州","玉树藏族自治州","海西蒙古族藏族自治州"],
            ["西安市","铜川市","宝鸡市","咸阳市","渭南市","延安市","汉中市","榆林市","安康市","商洛市"],
            ["南宁市","柳州市","桂林市","梧州市","北海市","防城港市","钦州市","贵港市","玉林市","百色市","贺州市","河池市","来宾市","崇左市"],
            ["拉萨市","那曲地区","昌都地区","山南地区","日喀则地区","阿里地区","林芝地区"],
            ["银川市","石嘴山市","吴忠市","固原市","中卫市"],
            ["乌鲁木齐市","克拉玛依市","石河子市 ","阿拉尔市","图木舒克市","五家渠市","吐鲁番市","阿克苏市","喀什市","哈密市","和田市","阿图什市","库尔勒市","昌吉市 ","阜康市","米泉市","博乐市","伊宁市","奎屯市","塔城市","乌苏市","阿勒泰市"],
            ["呼和浩特市","包头市","乌海市","赤峰市","通辽市","鄂尔多斯市","呼伦贝尔市","巴彦淖尔市","乌兰察布市","锡林郭勒盟","兴安盟","阿拉善盟"],
            ["澳门"],
            ["香港"],
            ["国外或其它"]
        ];
    </script>
    </html>