近期在做级联的时候,进数据库很简单,但是发现从数据库查出来就很麻烦了,想了各种办法。
经过指导后,发现看懂js代码还是很重要的,三下五除二就解决了。
在这里也为大家提供一下这个方法,能够更好的完成自己的项目。
/*
* 全国三级城联动 js版
*/
function Dsy(){
this.Items = {};
}
Dsy.prototype.add = function(id,iArray){
this.Items[id] = iArray;
}
Dsy.prototype.Exists = function(id){
if(typeof(this.Items[id]) == "undefined") return false;
return true;
}
function change(v){
var str="0";
for(i=0;i<v;i++){
str+=("_"+(document.getElementById(s[i]).selectedIndex-1));
};
var ss=document.getElementById(s[v]);
with(ss){
length = 0;
options[0]=new Option(opt0[v],opt0[v]);
if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v){
if(dsy.Exists(str)){
ar = dsy.Items[str];
for(i=0;i<ar.length;i++){
options[length]=new Option(ar[i],ar[i]);
}//end for
if(v){ options[0].selected = true; }
}
}//end if v
if(++v<s.length){change(v);}
}//End with
}
<span style="color:#FF0000;">function set(p,c,d){
document.getElementById(s[0]).value=p;
change(1);
document.getElementById(s[1]).value=c;
change(2);
document.getElementById(s[2]).value=d;
}</span>
var dsy = new Dsy();
//省略数据
var s=["s_province","s_city","s_county"];//三个select的name
var opt0 = ["省份","地级市","市、县级市"];//初始值
function _init_area(){ //初始化函数
for(i=0;i<s.length-1;i++){
document.getElementById(s[i]).οnchange=new Function("change("+(i+1)+")");
}
change(0);
}
代码中红色部分就是我为大家添加的一个方法,将省市区传值进去即可。
注意:
传值的数据一定要与js里面数据文件是一致的。
看懂代码还是很重要的,不然没有目标没有思想的去写代码!!!
希望大家互相交流!!!