本文實例講述了java實現(xiàn)的二級聯(lián)動菜單效果。分享給大家供大家參考,具體如下:
JSP代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
<%@ page language= "java" pageEncoding= "UTF-8" %> <html> <head> <title>二級菜單聯(lián)動演示</title> <script type= "text/javascript" > var req; window.onload=function() { //頁面加載時的函數(shù) } function Change_Select(){ //當(dāng)?shù)谝粋€下拉框的選項發(fā)生改變時調(diào)用該函數(shù) var province = document.getElementById( 'province' ).value; var url = "select?id=" + escape(province); if (window.XMLHttpRequest){ req = new XMLHttpRequest(); } else if (window.ActiveXObject){ req = new ActiveXObject( "Microsoft.XMLHTTP" ); } if (req){ req.open( "GET" ,url, true ); //指定回調(diào)函數(shù)為callback req.onreadystatechange = callback; req.send( null ); } } //回調(diào)函數(shù) function callback(){ if (req.readyState == 4 ){ if (req.status == 200 ){ parseMessage(); //解析XML文檔 } else { alert( "不能得到描述信息:" + req.statusText); } } } //解析返回xml的方法 function parseMessage(){ var xmlDoc = req.responseXML.documentElement; //獲得返回的XML文檔 var xSel = xmlDoc.getElementsByTagName( 'select' ); //獲得XML文檔中的所有<select>標(biāo)記 var select_root = document.getElementById( 'city' ); //獲得網(wǎng)頁中的第二個下拉框 select_root.options.length= 0 ; //每次獲得新的數(shù)據(jù)的時候先把每二個下拉框架的長度清0 for (var i= 0 ;i<xSel.length;i++){ var xValue = xSel[i].childNodes[ 0 ].firstChild.nodeValue; //獲得每個<select>標(biāo)記中的第一個標(biāo)記的值,也就是<value>標(biāo)記的值 var xText = xSel[i].childNodes[ 1 ].firstChild.nodeValue; //獲得每個<select>標(biāo)記中的第二個標(biāo)記的值,也就是<text>標(biāo)記的值 var option = new Option(xText, xValue); //根據(jù)每組value和text標(biāo)記的值創(chuàng)建一個option對象 try { select_root.add(option); //將option對象添加到第二個下拉框中 } catch (e){ } } } </script> </head> <body> <div align= "center" > <form name= "form1" method= "post" action= "" > <table width= "70%" border= "0" cellspacing= "0" cellpadding= "0" > <tr> <td align= "center" > 二級聯(lián)動示例 </td> </tr> <tr> <td> <select name= "province" id= "province" onChange= "Change_Select()" > <!–第一個下拉菜單–> <option value= "0" > 請選擇 </option> <option value= "1" > 北京 </option> <option value= "2" > 天津 </option> <option value= "3" > 山東 </option> </select> <select name= "city" id= "city" > <!–第二個下拉菜單–> <option value= "0" > 請選擇 </option> </select> </td> </tr> <tr> <td> </td> <tr> </table> </form> </div> </body> </html> |
Java代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
package com; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /*** * * @author zdw * */ public class SelectServlet extends HttpServlet { private static final long serialVersionUID = 1L; public SelectServlet() { super (); } public void destroy() { super .destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setCharacterEncoding("GBK"); response.setContentType( "text/xml" ); response.setHeader( "Cache-Control" , "no-cache" ); request.setCharacterEncoding( "GBK" ); response.setCharacterEncoding( "UTF-8" ); String targetId = request.getParameter( "id" ).toString(); System.out.println(targetId); // 獲得請求中參數(shù)為id的值 String xml_start = "<selects>" ; String xml_end = "</selects>" ; String xml = "" ; if (targetId.equalsIgnoreCase( "0" )) { xml = "<select><value>0</value><text>請選擇</text></select>" ; } else if (targetId.equalsIgnoreCase( "1" )) { xml = "<select><value>1</value><text>昌平</text></select>" ; xml += "<select><value>2</value><text>豐臺</text></select>" ; xml += "<select><value>3</value><text>海淀</text></select>" ; xml += "<select><value>4</value><text>朝陽</text></select>" ; } else if (targetId.equalsIgnoreCase( "2" )) { xml = "<select><value>1</value><text>塘沽區(qū)</text></select>" ; xml += "<select><value>2</value><text>漢沽區(qū)</text></select>" ; xml += "<select><value>3</value><text>大港區(qū)</text></select>" ; xml += "<select><value>4</value><text>東麗區(qū)</text></select>" ; } else { // 如果是3,則返回下面的字符 xml = "<select><value>1</value><text>濟南</text></select>" ; xml += "<select><value>2</value><text>青島</text></select>" ; xml += "<select><value>3</value><text>淄博</text></select>" ; xml += "<select><value>4</value><text>棗莊</text></select>" ; } String last_xml = xml_start + xml + xml_end; response.getWriter().write(last_xml); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void init() throws ServletException { } } |
XML代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<? xml version = "1.0" encoding = "UTF-8" ?> < web-app version = "2.4" xmlns = "http://java.sun.com/xml/ns/j2ee" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> < servlet > < servlet-name >SelectServlet</ servlet-name > < servlet-class >com.SelectServlet</ servlet-class > </ servlet > < servlet-mapping > < servlet-name >SelectServlet</ servlet-name > < url-pattern >/select</ url-pattern > </ servlet-mapping > < welcome-file-list > < welcome-file >index.jsp</ welcome-file > </ welcome-file-list > </ web-app > |
希望本文所述對大家java程序設(shè)計有所幫助。