天天看点

ajax实现无限级联动 针对select做得,其他可以仿照修改

//obj:主select菜单对象;

//aspaddress:asp处理文件地址以及要传递的参数;

//toobj:从select菜单对象;

//firstxml:返回的第一个XML节点名;

//secondxml:返回的第二个XML节点名;

//toobjoptionlength:从select菜单对象初始option个数;

//注意:在传递各个对象值得时候,尽量使用$(id),比如,传递地址中需要?id=obj.value时,地址最好改成?id=$(obj)

//aspaddress,toobj后续联动中,这两个必选,后面不填将按照前面一个

function AjaxSelectOption(obj,aspaddress,toobj,firstxml,secondxml,toobjoptionlength)

{

var argus=arguments;

var XmlHttp=new XMLHttpRequest();

if(typeof(obj)=="string"){obj=document.getElementById(obj);}

aspaddress=aspaddress.replace(//$/(([^/)]+)/)/g,function($0,$1){return document.getElementById($1).value;});

toobjoptionlength=parseInt(toobjoptionlength);

if(obj){aspaddress+=obj.value;}

if (aspaddress.indexOf("?")==-1){aspaddress+="?"+Math.random();}

else{aspaddress+="&"+Math.random();}

XmlHttp.open("GET",aspaddress,true);

XmlHttp.onreadystatechange=function()

{

if(XmlHttp.readyState==4&&XmlHttp.status==200)

{

var XmlDoc=XmlHttp.responseXML;

var fxml=XmlDoc.getElementsByTagName(firstxml);

var sxml=XmlDoc.getElementsByTagName(secondxml);

var ajaxObj=document.getElementById(toobj);

ajaxObj.options.length=toobjoptionlength;

for (i=0;i<fxml.length;i++)

{

if (fxml[i] && sxml[i])

{

ajaxObj.options.add(new Option(sxml[i].text,fxml[i].text,false,false));

//document.getElementById(toobj).options[i+toobjoptionlength].value=fxml[i].text;

//document.getElementById(toobj).options[i+toobjoptionlength].text=sxml[i].text;

}

}

}

if (XmlHttp.readyState==4&&XmlHttp.status==200&&argus.length>7)

{

if (ajaxObj.value=='')

{

selectlength=toobjoptionlength

for (i=7;i<argus.length;i+=5)

{

var selectobj,selectlength;

selectobj=argus[i];

selectlength=argus.length>(i+3)?argus[(i+3)]==''?selectlength:argus[(i+3)]:selectlength;

document.getElementById(selectobj).options.length=selectlength;

}

}

else

{

var saspaddress=argus[6];

var stoobj=argus[7];

var sfirstxml=argus.length>8?argus[8]==''?firstxml:argus[8]:firstxml;

var ssecondxml=argus.length>9?[9]==''?secondxml:argus[9]:secondxml;

var stoobjoptionlength=argus.length>10?argus[10]==''?toobjoptionlength:argus[10]:toobjoptionlength;

var runthis="AjaxSelectOption('"+toobj+"','"+saspaddress+"','"+stoobj+"','"+sfirstxml+"','"+ssecondxml+"',"+stoobjoptionlength

for (i=11;i<argus.length;i++)

{

runthis+=",'"+argus[i]+"'";

}

runthis+=")";

eval(runthis);

}

}

}

XmlHttp.send(null);

}