小妹再次发帖请教各位前辈如何做三级下拉框联动问题。
以下是我的代码!请各位前辈指正。
--
-- 表的结构 `city`
--CREATE TABLE `city` (
  `idcity` int(11) NOT NULL auto_increment COMMENT '城市ID',
  `idprovince` int(11) NOT NULL COMMENT '省ID',
  `city_name` varchar(50) character set utf8 collate utf8_unicode_ci NOT NULL COMMENT '城市名称',
  PRIMARY KEY  (`idcity`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;--
-- 导出表中的数据 `city`
--INSERT INTO `city` (`idcity`, `idprovince`, `city_name`) VALUES
(1, 1, '石家庄市'),
(2, 1, '邯郸市'),
(3, 3, '东城区'),
(4, 3, '西城区'),
(5, 3, '崇文区'),
(6, 3, '宣武区');-- ----------------------------------------------------------
-- 表的结构 `province`
--CREATE TABLE `province` (
  `idprovince` int(11) NOT NULL auto_increment COMMENT '省ID',
  `province_name` varchar(50) character set utf8 collate utf8_unicode_ci NOT NULL COMMENT '名称',
  PRIMARY KEY  (`idprovince`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;--
-- 导出表中的数据 `province`
--INSERT INTO `province` (`idprovince`, `province_name`) VALUES
(1, '河北省'),
(2, '河南省'),
(3, '北京市'),
(4, '广东省');-- ----------------------------------------------------------
-- 表的结构 `user`
--CREATE TABLE `user` (
  `uid` int(11) NOT NULL auto_increment COMMENT 'user表ID',
  `user_name` varchar(50)character set utf8 collate utf8_unicode_ci NOT NULL COMMENT '用户姓名',
  `idprovince` int(11) NOT NULL COMMENT '所属省ID',
  `idcity` int(11) NOT NULL COMMENT '所属城市ID',
  PRIMARY KEY  (`uid`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;--
-- 导出表中的数据 `user`
--INSERT INTO `user` (`uid`, `user_name`, `idprovince`, `idcity`) VALUES
(1, '张三', 1, 0),
(2, '李四', 1, 1),
(3, '王五', 2, 0),
(4, '店小二', 3, 3),
(5, '孙二娘', 3, 4),
(6, '武松', 3, 6);以下是PHP代码 <?PHP    
 session_start();
require("../../includes/dbconn.php");//这就是个数据库的类
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
<html xmlns="http://www.w3.org/1999/xhtml">    
<head>    
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />    
<title>三级联动</title> 
<script language="javascript">
var citylen = 0;
arraycity = new Array(); //生成二级联动所用数组
<?
$sql="select city.idcity,
province.idprovince,
city.city_name,
province.province_name 
from city left join province on city.idprovince=province.idprovince";

//getRsArray() 从数据库里读取数据。返回一个多行的数据
$rs=$dbc->getRsArray($sql);
//$dbc->num_rows;//返回查询结果有多少行。
for($i=0;$i<$dbc->num_rows;$i++){?>
arraycity[<?=$i?>] = new Array(<?=$rs[$i][idcity]?>,"<?=addslashes($rs[$i][city_name])?>",<?=$rs[$i][idprovince]?>);
<? }?>
citylen=<?=$dbc->num_rows?>function chgprovince(province) //选择省
{
var i;
var city=document.getElementById("city");
city.length = 0;
city.options[0] = new Option("-请选择-",0);

for(i=0;i<citylen;i++)
{
if(arraycity[i][2]==province)
{
city.options[city.length] = new Option(arraycity[i][1],arraycity[i][0]);
}
}
//这里我还想得到这个省里有多少个用户
//$sql="select * from user where idprovince=所选的省";
}
function chgcity(city) //选择市
{
//这里我还想得到选择省,选择市之后有多少用户
//$sql="select * from user where idprovince=所选的省 and idcity=所选的市";
}
function init(){
chgprovince(0);
}
</script>   
</head>     
<body>     
  
省:<select name="province" id="province" onchange="chgprovince(this.value)"> 
<option value="0">-请选择-</option>
<?
$sql="select * from province";
$rs_province=$dbc->getRsArray($sql);
for($i=0;$i<$dbc->num_rows;$i++){
?>    
  <option value="<?=$rs_province[$i][idprovince]?>"><?=$rs_province[$i][province_name]?></option>
<?}?>  
</select>    
城市:<select name="city" id="city" onchange="chgcity(this.value)">         
<option value="0">-请选择-</option>    
</select>  
用户:<select name="user" id="user">         
<option value="0">-请选择-</option>    
</select>  
   
</body>    
</html> 

解决方案 »

  1.   

    谢谢!前辈了!我以前是发了个帖子!但是那个我是用ajax做的!现在看看能不能用其他方法实现!!
      

  2.   

    写了一个,没有调试,可能会有错误<?PHP    
    @session_start();
    /**
    * 内置的json函数只能用户utf8,你的页面是gb2312的,所以只能写个json函数了
    */
    function myjson($arr){
    if (is_array($arr)){
    if (is_assoc($arr)){
    return assoc2json($arr);
    }else{
    return array2json($arr);
    }
    }else{
    return $arr;
    }
    }
    function is_assoc($arr){
    if (!is_array($arr) )
    return false;

    $keys = array_keys($arr);
    if (!count($arr) || preg_match("/^\d+$/",join('',$keys)))
    return false;
    else
    return true;
    }
    function assoc2json($arr){
    $rev=array();
    foreach ($arr as $key=>$val){
    $rev[] = "\"".h($key)."\":".(is_array($val)?myjson($val):"\"".(nltobr(h($val)))."\"");
    }
    return '{'.join(',',$rev).'}';
    }
    function array2json($arr){
    $rev=array();
    foreach ($arr as $val){
    $rev[]=is_array($val)?myjson($val):"'".( nltobr(h($val)))."'";
    }
    return '['.join(',',$rev).']';
    }header('Content-type:text/html;charset=gb2312');
    require("../../includes/dbconn.php"); //这就是个数据库的类$sql="select * from province";
    $rs_province=$dbc->getRsArray($sql);$sql="select city.idcity,
            province.idprovince,
            city.city_name,
            province.province_name 
            from city left join province on city.idprovince=province.idprovince";
      $rs=$dbc->getRsArray($sql);if ( isset($_GET['act']) ){
    $rs = array('cities'=>array(),'users'=>array());
    switch($_GET['act']){
         case 'getCities':
             $provid = intval($_GET['province']);
                
                $rs['cities'] = $dbc->getRsArray("Select * From city where idprovince=$provid");
                $rs['users']  = $dbc->getRsArray("Select * From `user` where idprovince=$provid");
             $json = myjson($rs);
             break;
            case 'getUsers':
             $cityid = intval($_GET['city']);
                $rs['users'] = $dbc->getRsArray("Select * From `user` where idcity=$cityid");
                $json = myjson($rs);
             break;
        }
        exit($json);
    }   
          
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
    <html xmlns="http://www.w3.org/1999/xhtml">    
    <head>    
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
     
    <!-- jquery.js这个文件自己去jquery.com下载 -->
    <script type="text/javascript" src="js/jquery.js"  ></script>
    <script type="text/javascript" src="http://www.json.org/json2.js"  ></script><title>三级联动</title> 
    <script language="javascript">
    var citylen = 0;
    arraycity = new Array();        //生成二级联动所用数组
    var url = "<?php echo $_SERVER['REQUEST_URI']?>";function chgprovince(prov)    //选择省
    {
    var provid = prov.options[prov.selectedIndex].value;
    $.get(url,{'act':'getCities','province':provid},function (data){
     var rs = JSON.parse(data);
     var el_city = document.getElementById('city');
     while (el_city.options.length>1){
     el_city.removeChild(el_city.lastChild);
     }
     for (var i=0; i<rs['cities'].length;i++){
     var op=document.createElement('option');
     op.value = rs['cities'][i]['idcity'];
     op.innerHTML = rs['cities'][i]['city_name'];
     el_city.appendChild(op);
     }
     var usr_city = document.getElementById('user');
     while (usr_city.options.length>1){
     usr_city.removeChild(usr_city.lastChild);
     }
     for (var i=0; i<rs['users'].length;i++){
     var op=document.createElement('option');
     op.value = rs['users'][i]['uid'];
     op.innerHTML = rs['users'][i]['username'];
     usr_city.appendChild(op);
     }
     
    });
    }
    function chgcity(el_city)    //选择市
    {
        var cityid=el_city.options[ el_city.selectedIndex ].value;
    $.get(url,{'act':'getUsers','city':cityid},function(data){
    var rs = JSON.parse(data);
     var usr_city = document.getElementById('user');
     while (usr_city.options.length>1){
     usr_city.removeChild(usr_city.lastChild);
     }
     for (var i=0; i<rs['users'].length;i++){
     var op=document.createElement('option');
     op.value = rs['users'][i]['uid'];
     op.innerHTML = rs['users'][i]['username'];
     usr_city.appendChild(op);
     }
    });
    }</script>   
    </head>     
    <body>     
      
    省:<select name="province" id="province" onchange="chgprovince(this)"> 
    <option value="0">-请选择-</option>
    <?php
    for($i=0;$i<$dbc->num_rows;$i++):?>    
      <option value="<?=$rs_province[$i][idprovince]?>"><?=$rs_province[$i][province_name]?></option>
    <?php endfor?>  
    </select>    
    城市:<select name="city" id="city" onchange="chgcity(this)">         
    <option value="0">-请选择-</option>    
    </select>  
    用户:<select name="user" id="user">         
    <option value="0">-请选择-</option>    
    </select>  
       
    </body>    
    </html> 
      

  3.   

    糟糕,写完了才看到你这句话,我也用的AJAX!
      

  4.   

    我去http://code.jquery.com/jquery-1.4.2.js 和 
    http://www.json.org/json2.js
    这里下载jquery-1.4.2.js 和json2.js但是提示我错误!
    IMPORTANT:Remove this line from json2.js before deployment.然后网页提示我14行错误!
    Line:14
    Char:5
    Code:0
    Error:'$' 未定义
    网址:http://localhost/crm2.5/admin/test/ThreeDown.php
      

  5.   

    哦~~我看了!是json2.js里有一个alert我改了删除掉了就不弹出窗口了!呵呵~~是我不仔细!说明我路径没有错误!但是还是网页有错误!
    Line:14
    Char:5
    Code:0
    Error:'$' 未定义并且只有第一个省有值,市和用户都没有值!
      

  6.   

    Error:'$' 未定义
    说明jquery的路近有问题
      

  7.   

    Line:480
    Char:13
    Code:0
    Error:例外被抛出且未被接住
    网址:http://localhost/crm2.5/admin/js/json2.js
      

  8.   

     480           throw new SyntaxError('JSON.parse');这是json2.js里的内容
      

  9.   

    要不你就不用json2.js了,直接这样

    var rs=JSON.parse(data)
    替换成
    window['eval']("var rs="+data+";");
      

  10.   

    window['eval']("var rs="+data+";");
    提示我语法错误!我把生成页面的整段代码贴出来! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
    <html xmlns="http://www.w3.org/1999/xhtml">    
    <head>    
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />    
    <title>三级联动</title> 
    <script type="text/javascript" src="../js/jquery-1.4.2.js"  ></script>
    <script type="text/javascript" src="../js/json2.js"  ></script><script language="javascript">
    var citylen = 0;
    arraycity = new Array();        //生成二级联动所用数组
    var url = "/crm2.5/admin/test/ThreeDown.php";function chgprovince(prov)    //选择省
    {
        var provid = prov.options[prov.selectedIndex].value;
        $.get(url,{'act':'getCities','province':provid},function (data){
             window['eval']("var rs="+data+";");
             var el_city = document.getElementById('city');
             while (el_city.options.length>1){
                 el_city.removeChild(el_city.lastChild);
             }
             for (var i=0; i<rs['cities'].length;i++){
                 var op=document.createElement('option');
                 op.value = rs['cities'][i]['idcity'];
                 op.innerHTML = rs['cities'][i]['city_name'];
                 el_city.appendChild(op);
             }
             var usr_city = document.getElementById('user');
             while (usr_city.options.length>1){
                 usr_city.removeChild(usr_city.lastChild);
             }
             for (var i=0; i<rs['users'].length;i++){
                 var op=document.createElement('option');
                 op.value = rs['users'][i]['uid'];
                 op.innerHTML = rs['users'][i]['username'];
                 usr_city.appendChild(op);
             }
             
        });
    }
    function chgcity(el_city)    //选择市
    {
        var cityid=el_city.options[ el_city.selectedIndex ].value;
        $.get(url,{'act':'getUsers','city':cityid},function(data){
            window['eval']("var rs="+data+";");                                            
             var usr_city = document.getElementById('user');
             while (usr_city.options.length>1){
                 usr_city.removeChild(usr_city.lastChild);
             }
             for (var i=0; i<rs['users'].length;i++){
                 var op=document.createElement('option');
                 op.value = rs['users'][i]['uid'];
                 op.innerHTML = rs['users'][i]['username'];
                 usr_city.appendChild(op);
             }
        });
    }</script>   
    </head>     
    <body>     
      
    省:<select name="province" id="province" onchange="chgprovince(this)"> 
    <option value="0">-请选择-</option>
        
      <option value="1">河北省</option>
        
      <option value="2">河南省</option>
        
      <option value="3">北京市</option>
        
      <option value="4">广东省</option>
      
    </select>    
    城市:<select name="city" id="city" onchange="chgcity(this)">         
    <option value="0">-请选择-</option>    
    </select>  
    用户:<select name="user" id="user">         
    <option value="0">-请选择-</option>    
    </select>   
       
    </body>    
    </html> 
      

  11.   

    可能是ajax返回的数据格式有问题,你用firebug或者在function(data){后面加一句alert(data);看看返回的数据是不是有问题
      

  12.   

    这是打印出来的东西!
    <br />
    <b>Fatal error</b>: Call to undefined function h() in<b> D:\wamp\www.crm2.5\admin\test\ThreeDown.php</b> on line
    <b>29</b><br />
      

  13.   

    那个函数h()是我自己写的,把myjson从我自己的函数库复制出来的时候漏了这个函数
    把这个加上function h($str,$quotes=ENT_QUOTES){
    return htmlentities($str,$quotes,'gb2312');
    }
    function nltobr($str){
    return str_replace("\r",'<br />',str_replace("\n",'<br />',str_replace("\r\n",'<br />',$str)));
    }
      

  14.   

    还报错!说第19行报错!Line:19
    Char:10
    Code:0
    Error:缺少 '}'也就是
    window['eval']("var rs="+data+";"); 这行
      

  15.   

    {"cities":"","users":[{"0":"3","uid":"3","1":"","user_name":"","2":"2","idprovince":"2","3":"0","idcity":"0"}]}
    好长啊!
      

  16.   

    试试把window['eval']("var rs="+data+";"); 这里的双引号都改成单引号
      

  17.   

    wisword 在吗?我把它们改成单引号了!我选择河北省的时候不报错!但是市的下拉没有值!而用户那里显示undefined。因为河北省的所属市少!但是点击北京的时候就又报错了!还是缺少‘}’
      

  18.   

    有些字符需要转义报undefined错误是因为这一行
     op.innerHTML = rs['users'][i]['username'];
    应该改成你
     op.innerHTML = rs['users'][i]['user_name'];
      

  19.   

    jquery tree 来做吧。。 前提是有点jquery 基础
      

  20.   

    能说个思路吗! 我实在弄不出来!没有jquery基础!我打印出来alert(rs['cities'][i]['city_name']);
    是个口 还是个乱码!!数据一多还打印不出来!!不知道为什么!我一会把代码发出来大家帮我看看!或者有什么好的解决办法帮帮我吧!
      

  21.   

    这是我写的代码!
    $dbc->getRsArray 返回的是一个结果集。
    $dbc->num_rows 返回的是这个结果集里有多少行 <?PHP    
     session_start();
    require("../../includes/dbconn.php");//这就是个数据库的类function myjson($arr){
        if (is_array($arr))
        {
            if (is_assoc($arr))
            {
                return assoc2json($arr);
            }
            else
            {
                return array2json($arr);
            }
        }
        else
        {
            return $arr;
        }
    }
    function is_assoc($arr){
        if (!is_array($arr))
        {
            return false;}
        
        $keys = array_keys($arr);
        if (!count($arr) || preg_match("/^\d+$/",join('',$keys)))
        {  return false;}
        else{
            return true;}
    }
    function assoc2json($arr){
        $rev=array();
        foreach ($arr as $key=>$val){
            $rev[] = "\"".h($key)."\":".(is_array($val)?myjson($val):"\"".(nltobr(h($val)))."\"");
        }
        return '{'.join(',',$rev).'}';
    }
    function array2json($arr){
        $rev=array();
        foreach ($arr as $val){
            $rev[]=is_array($val)?myjson($val):"'".( nltobr(h($val)))."'";
        }
        return '['.join(',',$rev).']';
    }
    function h($str,$quotes=ENT_QUOTES){
        return htmlentities($str,$quotes,'gb2312');
    }
    function nltobr($str){
        return str_replace("\r",'<br />',str_replace("\n",'<br />',str_replace("\r\n",'<br />',$str)));
    }$sql="select * from province";
    $rs_province=$dbc->getRsArray($sql);
    $province_num=0;
    $province_num=$dbc->num_rows;$sql="select city.idcity,
            province.idprovince,
            city.city_name,
            province.province_name 
            from city left join province on city.idprovince=province.idprovince";
      $rs=$dbc->getRsArray($sql);if ( isset($_GET['act']) ){
        $rs = array('cities'=>array(),'users'=>array());
        switch($_GET['act']){
            case 'getCities':
                $provid = intval($_GET['province']);
                
                $rs['cities'] = $dbc->getRsArray("select * From city where idprovince=$provid");
                $rs['users']  = $dbc->getRsArray("select * From user where idprovince=$provid");
                $json = myjson($rs);
                break;
            case 'getUsers':
                $cityid = intval($_GET['city']);
                $rs['users'] = $dbc->getRsArray("select * From `user` where idcity=$cityid");
                $json = myjson($rs);
                break;
        }
        exit($json);
    }  
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
    <html xmlns="http://www.w3.org/1999/xhtml">    
    <head>    
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />    
    <title>三级联动</title> 
    <script type="text/javascript" src="../js/jquery-1.4.2.js"  ></script>
    <script language="javascript">
    var citylen = 0;
    arraycity = new Array();        //生成二级联动所用数组
    var url = "<?php echo $_SERVER['REQUEST_URI']?>";function chgprovince(prov)    //选择省
    {
        var provid = prov.options[prov.selectedIndex].value;
        //alert(provid);
        $.get(url,{'act':'getCities','province':provid},function (data){
         //alert(data);
             window['eval']('var rs='+data+';');
             var el_city = document.getElementById('city');
             while (el_city.options.length>1)
             {
                 el_city.removeChild(el_city.lastChild);
             }
             for (var i=0; i<rs['cities'].length;i++)
             {
              alert(rs['cities'][i]['city_name']);
                 var op=document.createElement('option');
                 
                 op.value = rs['cities'][i]['idcity'];
                 op.innerHTML = rs['cities'][i]['city_name'];
                 el_city.appendChild(op);
             }
             var usr_city = document.getElementById('user');
             while (usr_city.options.length>1){
                 usr_city.removeChild(usr_city.lastChild);
             }
             for (var i=0; i<rs['users'].length;i++){
              alert(rs['users'][i]['user_name']);
                 var op=document.createElement('option');
                 op.value = rs['users'][i]['uid'];
                 op.innerHTML = rs['users'][i]['user_name'];
                 usr_city.appendChild(op);
             }
             
        });
    }
    function chgcity(el_city)    //选择市
    {
        var cityid=el_city.options[ el_city.selectedIndex ].value;
        $.get(url,{'act':'getUsers','city':cityid},function(data){
         alert(data);
            window['eval']('var rs='+data+';');                                            
             var usr_city = document.getElementById('user');
             while (usr_city.options.length>1){
                 usr_city.removeChild(usr_city.lastChild);
             }
             for (var i=0; i<rs['users'].length;i++){
                 var op=document.createElement('option');
                 op.value = rs['users'][i]['uid'];
                 op.innerHTML = rs['users'][i]['user_name'];
                 usr_city.appendChild(op);
             }
        });
    }</script>   
    </head>     
    <body>     
      
    省:<select name="province" id="province" onchange="chgprovince(this)"> 
    <option value="0">-请选择-</option>
    <?php
    for($i=0;$i<$province_num;$i++):?>    
      <option value="<?=$rs_province[$i][idprovince]?>"><?=$rs_province[$i][province_name]?></option>
    <?php endfor?>  
    </select>    
    城市:<select name="city" id="city" onchange="chgcity(this)">         
    <option value="0">-请选择-</option>    
    </select>  
    用户:<select name="user" id="user">         
    <option value="0">-请选择-</option>    
    </select>   
       
    </body>    
    </html> 
      

  22.   

    把问题都混在一起,容易弄不出来。
    用简单想法的去看这个功能,可以将它分成3个独立的简单功能:1、通过数组生成下拉框;2、三个数组分别对应各个级别的数据;3:下拉框值发生改变时触发更新下一级的下拉框(也就是删除下拉框的子元素,或者直接innerHTML="",然后重新生成下拉框)。
    把更新下一级下拉框的触发点放对,三个数组数据可以写死在页面上,也可以通过ajax从服务器获得。
      

  23.   

    小妹学程序不容易,我写了个简单的,更多的功能和显示要求都可以在这上面扩展。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    </head>
    <body>
    <select id="level1" onchange="setselect2(this);"></select>
    <br/>
    <br/>
    <select id="level2" onchange="setselect3(this);"></select>
    <br/>
    <br/>
    <select id="level3"></select>
    <script type="text/javascript">
    var l1no=0;
    var l2no=0; var l1data=[["1","aaaaa"],["2","bbbbb"]];

    var l2data=new Array();
    l2data[0]=new Array();
    l2data[1]=new Array();
    l2data[0]=[["1","11aaaaa"],["2","12bbbbb"],["3","13ccccc"]];
    l2data[1]=[["1","21aaaaa"],["2","22bbbbb"],["3","23ccccc"]]; var l3data=new Array();
    l3data[0]=new Array();
    l3data[0][0]=new Array();
    l3data[0][1]=new Array();
    l3data[0][2]=new Array();
    l3data[0][0]=[["1","111aaaaa"],["2","112bbbbb"]];
    l3data[0][1]=[["1","121aaaaa"],["2","122bbbbb"]];
    l3data[0][2]=[["1","131aaaaa"],["2","132bbbbb"]];

    l3data[1]=new Array();
    l3data[1][0]=new Array();
    l3data[1][1]=new Array();
    l3data[1][2]=new Array();
    l3data[1][0]=[["1","211aaaaa"],["2","212bbbbb"]];
    l3data[1][1]=[["1","221aaaaa"],["2","222bbbbb"]];
    l3data[1][2]=[["1","231aaaaa"],["2","232bbbbb"]]; CreateSelect(document.getElementById("level1"),l1data);
    SelectOrigin(document.getElementById("level2"));
    SelectOrigin(document.getElementById("level3")); function setselect2(){
    var cur1val=arguments[0].value;
    if(cur1val=="-1"){
    SelectOrigin(document.getElementById("level2"));
    SelectOrigin(document.getElementById("level3"));
    return true;
    }
    n=l1data.length;
    for(i=0;i<n;i++){
    if(l1data[i][0]==cur1val){
    l1no=i;
    break;
    }
    }
    CreateSelect(document.getElementById("level2"),l2data[l1no]);
    SelectOrigin(document.getElementById("level3"));
    } function setselect3(){
    var cur2val=arguments[0].value;
    if(cur2val=="-1"){
    SelectOrigin(document.getElementById("level3"));
    return true;
    }
    n=l2data[l1no].length;
    for(i=0;i<n;i++){
    if(l2data[l1no][i][0]==cur2val){
    l2no=i;
    break;
    }
    }
    CreateSelect(document.getElementById("level3"),l3data[l1no][l2no]);
    } function CreateSelect(selobj,valarr,seledval) {
    selobj.innerHTML="";
    if (typeof seledval == 'undefined'){
    seledval='-1';
    }
    var opno=0;
    n=valarr.length;
    opt = new Option();
    opt.value = "-1";
    opt.text = "-select-";
    if(seledval=='-1'){
    opt.selected = true;
    }
    selobj.options[opno] = opt;
    opno++;
    for(i=0;i<n;i++){
    opt = new Option();
    opt.value = valarr[i][0];
    opt.text = valarr[i][1];
    if(valarr[i][0]==seledval){
    opt.selected = true;
    }
    selobj.options[opno] = opt;
    opno++;
    }
    selobj.length = opno;
    }

    function SelectOrigin(selobj) {
    selobj.innerHTML="";
    opt = new Option();
    opt.value = "-1";
    opt.text = "-select-";
    selobj.options[0] = opt;
    }
    </script> 
    </body>
    </html>