动态加载列表框实现级联菜单的效果
来源:互联网 发布:淘宝网电脑下载安装 编辑:程序博客网 时间:2024/05/22 03:53
效果截图:
视频效果:
当两个选择框的值均不为空的时候,向服务器发送请求,并通过document来改变显示框的内容。
静态页面:dynamicLists.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态清单案例</title>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
}
function refreshModelList(){
var make=document.getElementById("make").value;
var modelYear=document.getElementById("modelYear").value;
if(make==""||modelYear==""){
clearModelsList();
return;
}
var url="servlet/RefreshModelListServlet?"+createQueryString(make,modelYear)+"&ts="+new Date().getTime();
createXMLHttpRequest();
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function createQueryString(make,modelYear){
var queryString="make="+make+"&modelYear="+modelYear;
return queryString;
}
function handleStateChange(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
updateModelsList();
}
}
}
function updateModelsList(){
clearModelsList();
var models=document.getElementById("models");
var results=xmlHttp.responseXML.getElementsByTagName("model");
var option=null;
for(var i=0;i<results.length;i++){
option=document.createElement("option");
option.appendChild(document.createTextNode(results[i].firstChild.nodeValue));
models.appendChild(option);
}
}
function clearModelsList(){
var models=document.getElementById("models");
while(models.childNodes.length>0){
models.removeChild(models.childNodes[0]);
}
}
</script>
</head>
<body bgcolor="#CCFFFF">
<h1>请选择年份和品牌</h1>
<form action="#">
<span style="font-weight:bold;">生产年份:</span>
<select id="modelYear" onchange="refreshModelList();">
<option value="">请选择年份</option>
<option value="2006">2006</option>
<option value="1995">1995</option>
<option value="1985">1985</option>
<option value="1970">1970</option>
</select>
<br/><br/>
<span style="font-weight:bold;">品牌:</span>
<select id="make" onchange="refreshModelList()">
<option value="">请选择品牌</option>
<option value="Chevrolet">Chevrolet</option>
<option value="Dodge">Dodge</option>
<option value="Pontiac">Pontiac</option>
</select>
<br/><br/>
<span style="font-weight:bold;">Models:</span>
<br/>
<select id="models" size="6" style="width:300px;">
</select>
</form>
</body>
</html>
处理的Servlet:RefreshModelListServlet.java
package servlet;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RefreshModelListServlet extends HttpServlet{
private static List availableModels=new ArrayList();
protected void processRequest(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
response.setContentType("text/html;charset=UTF-8");
int modelYear=Integer.parseInt(request.getParameter("modelYear"));
String make=request.getParameter("make");
StringBuffer results=new StringBuffer("<models>");
MakeModelYear availableModel=null;
for(Iterator it=availableModels.iterator();it.hasNext();){
availableModel=(MakeModelYear)it.next();
if(availableModel.modelYear==modelYear){
if(availableModel.make.equals(make)){
results.append("<model>");
results.append(availableModel.model);
results.append("</model>");
}
}
}
results.append("</models>");
response.setContentType("text/xml");
response.getWriter().write(results.toString());
//System.out.println(results.toString());
}
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
processRequest(request,response);
}
public void init() throws ServletException{
availableModels.add(new MakeModelYear(2006,"Dodge","Charger"));
availableModels.add(new MakeModelYear(2006,"Dodge","Magnum"));
availableModels.add(new MakeModelYear(2006,"Dodge","Ram"));
availableModels.add(new MakeModelYear(2006,"Dodge","Viper"));
availableModels.add(new MakeModelYear(1995,"Dodge","Charger"));
availableModels.add(new MakeModelYear(1995,"Dodge","Magnum"));
availableModels.add(new MakeModelYear(1995,"Dodge","Ram"));
availableModels.add(new MakeModelYear(1995,"Dodge","Viper"));
availableModels.add(new MakeModelYear(1985,"Dodge","Charger"));
availableModels.add(new MakeModelYear(1985,"Dodge","Magnum"));
availableModels.add(new MakeModelYear(1985,"Dodge","Ram"));
availableModels.add(new MakeModelYear(1985,"Dodge","Viper"));
availableModels.add(new MakeModelYear(1970,"Dodge","Charger"));
availableModels.add(new MakeModelYear(1970,"Dodge","Magnum"));
availableModels.add(new MakeModelYear(1970,"Dodge","Ram"));
availableModels.add(new MakeModelYear(1970,"Dodge","Viper"));
availableModels.add(new MakeModelYear(2006,"Chevrolet","Colorado"));
availableModels.add(new MakeModelYear(2006,"Chevrolet","Corvette"));
availableModels.add(new MakeModelYear(2006,"Chevrolet","Equinox"));
availableModels.add(new MakeModelYear(2006,"Chevrolet","Monte Carlo"));
availableModels.add(new MakeModelYear(1995,"Chevrolet","Beretta"));
availableModels.add(new MakeModelYear(1995,"Chevrolet","Camaro"));
availableModels.add(new MakeModelYear(1995,"Chevrolet","Cavalier"));
availableModels.add(new MakeModelYear(1995,"Chevrolet","Lumina"));
availableModels.add(new MakeModelYear(1985,"Chevrolet","Cavalier"));
availableModels.add(new MakeModelYear(1985,"Chevrolet","Lumina"));
availableModels.add(new MakeModelYear(1985,"Chevrolet","Cavalier"));
availableModels.add(new MakeModelYear(1985,"Chevrolet","Chevette"));
availableModels.add(new MakeModelYear(1970,"Chevrolet","Celebrity"));
availableModels.add(new MakeModelYear(1970,"Chevrolet","Citation II"));
availableModels.add(new MakeModelYear(1970,"Chevrolet","Bel Air"));
availableModels.add(new MakeModelYear(1970,"Chevrolet","Caprice"));
availableModels.add(new MakeModelYear(2006,"Pontiac","Firebird"));
availableModels.add(new MakeModelYear(2006,"Pontiac","6000"));
availableModels.add(new MakeModelYear(2006,"Pontiac","Fiero"));
availableModels.add(new MakeModelYear(2006,"Pontiac","Grand Prix"));
availableModels.add(new MakeModelYear(1995,"Pontiac","Parisienne"));
availableModels.add(new MakeModelYear(1995,"Pontiac","Catalina"));
availableModels.add(new MakeModelYear(1995,"Pontiac","GTO"));
availableModels.add(new MakeModelYear(1995,"Pontiac","LeMans"));
availableModels.add(new MakeModelYear(1985,"Pontiac","Tempest"));
availableModels.add(new MakeModelYear(1985,"Pontiac","G6"));
availableModels.add(new MakeModelYear(1985,"Pontiac","Grand Prix"));
availableModels.add(new MakeModelYear(1985,"Pontiac","Solstice"));
availableModels.add(new MakeModelYear(1970,"Pontiac","Vibe"));
availableModels.add(new MakeModelYear(1970,"Pontiac","Bonneville II"));
availableModels.add(new MakeModelYear(1970,"Pontiac","Grand Am"));
availableModels.add(new MakeModelYear(1970,"Pontiac","Grand Prix"));
}
private static class MakeModelYear{
private int modelYear;
private String make;
private String model;
public MakeModelYear(int modelYear,String make,String model){
this.modelYear=modelYear;
this.make=make;
this.model=model;
}
}
}
关键词:动态加载 列表 级联菜单 List StringBuffer
0 0
- 动态加载列表框实现级联菜单的效果
- 实现Web页面中级联菜单的设计/实现动态加载列表框/实现自动刷新页面/实现Web页面的局部动态更新/实现自动完成功能
- Ajax+XML实现级联下拉菜单的动态加载
- jQuery实现级联菜单<数据动态加载>
- java联系---实现菜单的级联效果
- 如何在SharePoint2007中实现下拉列表(DropDownList)的级联菜单效果
- ajax实现动态级联列表框
- 级联菜单的实现
- 用jQuery和json实现级联菜单的效果
- 12章 上机3实现菜单的级联效果
- Java accp7.0 第十二章 实现菜单的级联效果
- 级联菜单的动态实现(数据库绑定)
- Html+css 实现级联菜单效果
- 层级菜单动态效果的实现
- 使用类的方法 实现菜单的级联效果 我行我素菜单管理系统
- smarty + ajax 实现二级动态级联菜单
- DOM实现动态添加级联菜单
- JAVA动态实现Excel三级级联菜单
- 用dtable显示并清除以前的结果
- 你不知道的 HTTP
- 分页显示的一个案例
- 利用Yahoo! Search API开发自已的搜索引擎-JavaScript版
- AJAX笔记心得
- 动态加载列表框实现级联菜单的效果
- 自动刷新页面技术
- 动态显示进度条
- 动态更新Web页面
- 创建工具窗口提示
- 自动完成技术,像百度一样通过AJAX技术来搜索备选项
- 通过Yahoo+Search+API访问Web服务实现自己的搜索引擎
- Servlet分页的大概思路
- VS2013单元测试