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]); 
if(v)options[1].selected = true; 


if(++v<s.length){change(v);} 

} var dsy = new Dsy(); dsy.add("0",["浙江","江苏","山东"]); 
dsy.add("0_0",["杭州","温州","湖州"]); 
dsy.add("0_0_0",["西湖区","上城区","下城区"]); 
dsy.add("0_0_1",["鹿城区","瑞安区"]);
dsy.add("0_0_2",["长兴县","安吉县"]);
dsy.add("0_1",["南京","苏州"]); 
dsy.add("0_1_0",["南京区","栖霞区"]);
dsy.add("0_1_1",["苏州区","吴江县"]);
dsy.add("0_2",["济南","青岛"]); 
dsy.add("0_2_0",["济南区","历下区"]);
dsy.add("0_2_1",["青岛区","黄岛县"]);var s=["s1","s2","s3"]; 
var opt0 = ["省","市","县"]; 
function setup() 

for(i=0;i<s.length-1;i++) 
document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")"); 
change(0); 
} 现在,我是从数据库中取到了三个值,山东,济南,历下区,如何让这三个值回填到JS的下拉菜单中。也就是打开联动的时候自动显示的是这三个数据。我用的是JSP,如果大家有更好的三级联动代码也可推荐一下
html的代码如下:
            <tr>
                <td class="left1">
                    联系地址:</td>
                <td class="left2">
                    <select id="s1"  name="s1">
                    </select>
                    <select id="s2"  name="s2">
                    </select>
                    <select id="s3"  name="s3">
                    </select>
                </td>
            </tr>

解决方案 »

  1.   

    http://www.cnblogs.com/zengxiangzhan/archive/2010/02/21/1670646.html
      

  2.   


    <select id="s1" name="s1">
    </select>
    <select id="s2" name="s2">
    </select>
    <select id="s3" name="s3">
    </select>
    <script language="JavaScript">
    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]);
    if(ar[i]==datafromdb[v])options[i+1].selected = true;//如果是db检索的数据,就选中
    }


    if(++v<s.length){change(v);} 


    var dsy = new Dsy(); dsy.add("0",["浙江","江苏","山东"]); 
    dsy.add("0_0",["杭州","温州","湖州"]); 
    dsy.add("0_0_0",["西湖区","上城区","下城区"]); 
    dsy.add("0_0_1",["鹿城区","瑞安区"]);
    dsy.add("0_0_2",["长兴县","安吉县"]);
    dsy.add("0_1",["南京","苏州"]); 
    dsy.add("0_1_0",["南京区","栖霞区"]);
    dsy.add("0_1_1",["苏州区","吴江县"]);
    dsy.add("0_2",["济南","青岛"]); 
    dsy.add("0_2_0",["济南区","历下区"]);
    dsy.add("0_2_1",["青岛区","黄岛县"]);var s=["s1","s2","s3"]; 
    var opt0 = ["省","市","县"]; 
    var datafromdb = ["山东","济南","历下区"]; //db检索的数据
    function setup() 
    {
    for(i=0;i<s.length-1;i++) 
    document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")"); 
    change(0); 

    setup();</script>