<!DOCTYPE html> <html> <head> <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title> 级联菜单 </title> <style type="text/css"> select { font-size: 11pt; width:150px; } </style> <script type="text/javascript"> // 构造2个数组 var detail_show = []; var detail_value = []; detail_show[0] = []; detail_value[0] = []; detail_show[0][0] = '上海'; detail_value[0][0] = '0101'; detail_show[0][1] = '北京'; detail_value[0][1] = '0102'; detail_show[0][2] = '广州'; detail_value[0][2] = '0103'; detail_show[1] = []; detail_value[1] = []; detail_show[1][0] = '纽约'; detail_value[1][0] = '0201'; detail_show[1][1] = '华盛顿'; detail_value[1][1] = '0202'; detail_show[1][2] = '加州'; detail_value[1][2] = '0203'; detail_show[2] = []; detail_value[2] = []; detail_show[2][0] = '伦敦'; detail_value[2][0] = '0301'; detail_show[2][1] = '利物浦'; detail_value[2][1] = '0302'; detail_show[2][2] = '伯明翰'; detail_value[2][2] = '0303'; function change(target){ // 获取级联的下拉列表 var deselect = document.getElementById("deselect"); // 清空第二个下拉列表的选项 deselect.innerHTML = null; var m = target.selectedIndex; if ( m >= 0 ) { for(i = 0; i < detail_show[m].length; i++){ // 循环构造很多option,然后放在指定的option中 // new Option(show,value)可以构造一个一个的option deselect.options[i] = new Option(detail_show[m][i], detail_value[m][i]); } // 设置默认选中第一个列表项 deselect.options[0].selected = true; } } </script> </head> <body> <div align="center"> <h2>级联菜单</h2> <form id="crazyitform"> <select name="caselect" id="caselect" onchange="change(this)";> <option value="01">中国</option> <option value="02">美国</option> <option value="03">英国</option> </select> <select name="deselect" id="deselect"> </select> </form> </div> </body> </html> <!-- 当数据量大的时候,就被撑爆了,所以这种级联,最好使用AJAX,也就是下一级变动是从数据库中查询得到的,而不是一开始就已经在页面中的 -->