<script>
function changsheng(va) {
if(va!='0')
{
var city = document.getElementById("city");
city.disabled=false;
var qu = document.getElementById("qu");
qu.disabled=true;
var f=document.getElementById("qu");
f.options.length=1;
var url="/Handler.ashx?type=sheng&id="+va;
send_request("GET",url,null,"text",populateClass3);
}
}
function populateClass3(ddd){
var f = document.getElementById("city");
if(http_request.readyState==4){
if(http_request.status==200){
var list=http_request.responseText;
var classList=list.split("|");
f.options.length=1;
for(var i=0;i<classList.length;i++){
var tmp=classList[i].split(",");
f.add(new Option(tmp[1],tmp[0]));
}
}else{
alert("您所请求的页面有异常1。");
}
}
}
function changshi(va)
{
if(va!='0')
{
var qu = document.getElementById("qu");
qu.disabled=false;

var url="/Handler.ashx?type=shi&id="+va;
send_request("GET",url,null,"text",populateClass4);

}
}
function populateClass4(){
var f=document.getElementById("qu");
if(http_request.readyState==4){
if(http_request.status==200){
var list=http_request.responseText;
var classList=list.split("|");
f.options.length=1;
for(var i=0;i<classList.length;i++){
var tmp=classList[i].split(",");
f.add(new Option(tmp[1],tmp[0]));
}
}else{
alert("您所请求的页面有异常2。");
}
}
}

</script>

解决方案 »

  1.   

    如果不用jquery框架,这段代码就不能精简了么?
      

  2.   


    function $(id){
       return document.getElementById(id);
    }document.getElementById("city"); 就可以写成$("city"),可以省很多代码。
      

  3.   

    看一遍jquery和mootools的源代码,你就知道你能简化的地方多了去了。
      

  4.   

    楼主不用jquery就算是比较精简的了
      

  5.   

    六楼说的挺对的,这段javascript代码,还好多地方可见精简,比如这个变量
    var f=document.getElementById("qu");
    你在还多方法中都用了,可以考虑将document.getElementById("qu")提出来作为一个全局变量,
    可以考虑用apply和闭包还可以简化,好好理解一下javascript的闭包,面向对象的原理。p.s.
    Just advice.
      

  6.   


    function $(id)
    {
        typeof id == "string" ? document.getElementById(id) : id;
    }//增加type参数区别不同的请求
    function change(type, va)
    {
        if (type && va)//va!='0'等同于va,进行了类型转换
        {
            var bOK = true;
            switch (type)       //不清楚LZ的业务逻辑,这里应该还可以简化,LZ自己看吧
            {
                case "sheng":
                    var city = $("city");
                    city.disabled=false;
                    var qu = $("qu");
                    qu.disabled=true;
                    var f=$("qu");      //这里2次的ID都是qu,不明白,估计是LZ写错了
                    f.options.length=1;
                    var r = c;          //给回调函数用的
                    break;
                case "shi":
                    var qu = $("qu");
                    qu.disabled=false;
                    var r = qu;         //给回调函数用的
                    break;
                default:
                    bOK = false;
            }
            if (bOK)
            {
                var url="/Handler.ashx?type=" + type + "&id="+va;
                send_request("GET",url,null,"text",function (){ //匿名函数传递参数
                    populate(r);
                });
            }
        }
    }function populate(f){   //f通过参数获得
        //var f = document.getElementById("city");
        if(http_request.readyState==4)
        {
            if(http_request.status==200)
            {
                var list=http_request.responseText;
                var classList=list.split("|");
                f.options.length=1;
                for(var i=0;i<classList.length;i++)
                {
                    var tmp=classList[i].split(",");
                    f.add(new Option(tmp[1],tmp[0]));
                }
            }
            else
            {
               //这里的异常出错对用户来说都是一样的,返回1或者2只是给程序员看的
                //如果真要区分,可以靠f.name或其他f的属性来区分
                alert("您所请求的页面有异常。");
            }
        }
    }