javascript的疑惑,请见代码,在注释处,如果我alert就可以给街区(sltDistrict ) 设置我要设置的值,但是如果我不alert就不会设置上,请问是什么原因,谢谢。var province = $("#Province").val();
            var city = $("#City").val();
            var district = $("#District").val();
            
            var c = $("#sltProvince option").length;
            for(var i = 0 ; i<c;i++)
            {
                if($("#sltProvince").get(0).options[i].text == province)
                {
                    $("#sltProvince").get(0).options[i].selected = true;
                    GetCityList($("#sltProvince").get(0).options[i].value);
                    break;
                }
            }
            
            c = $("#sltCity option").length;
            for(var i = 0 ; i<c;i++)
            {
                if($("#sltCity").get(0).options[i].text == city)
                {
                    $("#sltCity").get(0).options[i].selected = true;
                    GetDistrictList($("#sltCity").get(0).options[i].value);
                    break;
                }
            }
            alert("ss");//这里如果不alert,sltDistrict 选中不了我要设置的值,如果alert就可以绑定上值了。
            c = $("#sltDistrict option").length;
            for(var i = 0 ; i<c;i++)
            {
                if($("#sltDistrict").get(0).options[i].text == district)
                {
                    $("#sltDistrict").get(0).options[i].selected = true;
                    break;
                }
            }

解决方案 »

  1.   

    跟alert无关,建议楼主好好检查代码
      

  2.   

    楼主是不是用到ajax 而且是异步的,如果是的话,改用同步的.
      

  3.   

    嗯 应该是AJAX异步调用的问题,我把读取城区的方法集成到读取城市的方法里,
    在加载完城市后再读取城区就好了,谢谢
      

  4.   

    function GetCityList(e) {
            $.get("/ajax/GetCityList?province=" + e, function(data) {
                $("#sltCity").empty();
                $("#sltCity").append(data);
                
                var city = $("#City").val();
                if(city != "")
                {
                    var c = $("#sltCity option").length;
                    for(var i = 0 ; i<c;i++)
                    {
                        if($("#sltCity").get(0).options[i].text == city)
                        {
                            $("#sltCity").get(0).options[i].selected = true;
                            GetDistrictList($("#sltCity").get(0).options[i].value);
                            break;
                        }
                    }
                }            var province = $("#sltProvince").val();
                var city = $("#sltCity").val();
                $.get("/ajax/GetDistrictList?province=" + province + "&city=" + city, function(data) {
                    $("#sltDistrict").empty();
                    $("#sltDistrict").append(data);
                    
                    var district = $("#District").val();
                    if(district!="")
                    {
                        var c = $("#sltDistrict option").length;
                        for(var i = 0 ; i<c;i++)
                        {
                            if($("#sltDistrict").get(0).options[i].text == district)
                            {
                                $("#sltDistrict").get(0).options[i].selected = true;
                                break;
                            }
                        }
                    }
                })
            })
        }