现在在做一个省市地区三联联动菜单 省、市、地区 的数据在PHP页面已经取到 在TPL模块中 也可以获得 页面上SELECT下面把相应的省、市、地区都列出来了  现在要做个JS判断 想通过JS控制 市级和地区级列表 对应上一层选中的关键是怎么把这个数组(市级和地区级)传到JS中做 判断?市级数组格式(print_r后的显示):Array(
[0]=>Array([province]=>110000 [name]=>北京市 [code]=>110100) 
[1]=>Array([province]=>130000 [name]=>石家庄市 [code]=>130100)
) 地区级数据格式:Array(
[0]=>Array([citycode]=>110100 [name]=>东城区 [code]=>110101) 
[1]=>Array([citycode]=>110100 [name]=>西城区 [code]=>110102)
) 

解决方案 »

  1.   

    通过ID传啊,
    <select name="dq" id="dq"></select>function sqjudge(){
       var dq=getElementsById('dq');}
      

  2.   

    <script language="JavaScript">

    var subcat = getElementsById('s2');


                
    var subcat2 = getElementsById('s3');





    function changeselect1(locationid)
    {
    document.send.s2.length = 0;
    document.send.s2.options[0] = new Option('==请选择','');

    for (var i=0; i<subcat.length; i++)
    {

    if (subcat[i][0] == locationid)
    {
    document.send.s2.options[document.send.s2.length] = new Option(subcat[i][1], subcat[i][2]);}
    }
    }
    function changeselect2(locationid)
    {
    document.send.s3.length = 0;
    document.send.s3.options[0] = new Option('==请选择==','');
    for (var i=0; i<subcat2.length; i++)
    {
    if (subcat2[i][0] == locationid)
    {document.send.s3.options[document.send.s3.length] = new Option(subcat2[i][1], subcat2[i][2]);}
    }
    }

    </script>
    <BR>
    <select name="s1" onChange="changeselect1(this.value)">
    <option>==请选择==</option>
    <{foreach from=$subcatdatas item=item}>
    <option value=<{$item.code}>><{$item.name}></option>
    <{/foreach}>
    </select>
    <select name="s2" onChange="changeselect2(this.value)"> 
    <option>==请选择==</option>
    <{foreach from=$subcat item=item}>
    <option value=<{$item.provincecode}>><{$item.name}></option>
    <{/foreach}>
    </select>
    <select name="s3" > 
    <option>==请选择==</option>
    <{foreach from=$subcat2 item=item}>
    <option value=<{$item.citycode}>><{$item.name}></option>
    <{/foreach}>
    </select>是这样的么 var subcat = getElementsById('s2');
              var subcat2 = getElementsById('s3');没效果啊~~~~(>_<)~~~~ 
      

  3.   

    <script language="JavaScript">

    var subcat = getElementsById('s2');


                
    var subcat2 = getElementsById('s3');





    function changeselect1(locationid)
    {
    document.send.s2.length = 0;
    document.send.s2.options[0] = new Option('==请选择','');

    for (var i=0; i<subcat.length; i++)
    {

    if (subcat[i][0] == locationid)
    {
    document.send.s2.options[document.send.s2.length] = new Option(subcat[i][1], subcat[i][2]);}
    }
    }
    function changeselect2(locationid)
    {
    document.send.s3.length = 0;
    document.send.s3.options[0] = new Option('==请选择==','');
    for (var i=0; i<subcat2.length; i++)
    {
    if (subcat2[i][0] == locationid)
    {document.send.s3.options[document.send.s3.length] = new Option(subcat2[i][1], subcat2[i][2]);}
    }
    }

    </script>
    <BR>
    <select name="s1" onChange="changeselect1(this.value)">
    <option>==请选择==</option>
    <{foreach from=$subcatdatas item=item}>
    <option value=<{$item.code}>><{$item.name}></option>
    <{/foreach}>
    </select>
    <select name="s2" onChange="changeselect2(this.value)"> 
    <option>==请选择==</option>
    <{foreach from=$subcat item=item}>
    <option value=<{$item.provincecode}>><{$item.name}></option>
    <{/foreach}>
    </select>
    <select name="s3" > 
    <option>==请选择==</option>
    <{foreach from=$subcat2 item=item}>
    <option value=<{$item.citycode}>><{$item.name}></option>
    <{/foreach}>
    </select>是这样的么 var subcat = getElementsById('s2');
              var subcat2 = getElementsById('s3');没效果啊~~~~(>_<)~~~~ 
      

  4.   

    如果你的页面是utf8的可以用json_encode把php数组转成javascript的。或者你可以自己写一个函数:function arraytojson($arr){
        $rev=array();
        foreach ($arr as $item){
            $tmp = array()
            foreach ($item as $k=>$v){
                $tmp[] = "'$k'=>'$v'";
            }
            $rev[] = '{'.join(',',$tmp).'}';
        }
        return '['.join(',',$rev).']';
    }
      

  5.   

    不好意思,上面的代码有点小错误
     $tmp[] = "'$k'=>'$v'";
    改成
     $tmp[] = "'$k':'$v'";