【示例】教你简单用Java写一个动态更新的下拉列表(无数据库)

动态更新下拉列表

场景需求,在选择省之后出现选择的地级市名字

  • 在之前的教程交了怎么用server配置启动
  • 打开eclipse新建一个dynamic web projec,文件目录如下

  首先看下index.html,遇到的所有问题都出现js里面。页面拥有连个下拉列表,表1为省选择,表2 为城市选择。当表1选中时,调用updateSelect函数,更新表2的option。值得注意的时DOM的结构,在取得结果时,发现如是

option.text=result[i].childNodes[0].childNodes[0].nodeValue;
option.value=result[i].childNodes[1].childNodes[0].nodeValue;得到的的时undefined类型,为什么呢?因为childNodes指所有子节点(包括文本节点和元素节点)当年你的xml文件里面有空白字符时就会被认作是文本节点,空文本节点的子节点就是undefined,所以无法取到他的值,删掉一个.childNodes[0]可以在文件中发现生成了很多空白节点
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>动态更新下拉列表</title>
</head>
<script type="text/javascript">
    var xmlHttp;
    function creatXMLHttpRequest()
    {
        if(window.ActiveXObject){xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
        else if(window.XMLHttpRequest){xmlHttp=new XMLHttpRequest();}
    }
    function updateSelect()
    {
        var selected=document.all.slt1.value;
        creatXMLHttpRequest();
        xmlHttp.onreadystatechange=processor;
        xmlHttp.open("GET","CreatXML?selected="+selected);
        xmlHttp.send(null);
    }
    function processor()
    {
        var result;
        if(xmlHttp.readyState==4&&xmlHttp.status==200)
        {
            result=xmlHttp.responseXML.getElementsByTagName("city");
            while(document.all.slt2.length>0){ document.all.slt2.removeChild(document.all.slt2.childNodes[0]);}
            /*childNodes指所有子节点(包括文本节点和元素节点),当你代码这么写:<select name = "edu" id = "edu">   <option value = "博士">博士~~~</option>   <option value = "本科" id="benke">本科~~~</option>   //这里select和option之间,option和option之间有空白,这段空白就是文本节点;childNodes[0]指得是中间那段空白(文本节点),nodeName是#text;childNodes[1]为“博士”,nodeName是OPTION;childNodes[2]为空白,nodeName是#text;以此类推;可以用children(只获取元素节点)来代替childNodes*/
            for(var i=0;i<result.length;++i)
            {
                var option=document.createElement(‘option‘);
                option.text=result[i].children[0].childNodes[0].nodeValue;
                option.value=result[i].children[1].childNodes[0].nodeValue;
                document.all.slt2.options.add(option,null);
            }
        }
    }
</script>
<body>
<select id="slt1" onChange="updateSelect()">
    <option value="1">hunan</option>
    <option value="2">guangdong</option>
</select>
<select id="slt2">
    <option value="">choose your city</option>
</select>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <servlet>
      <servlet-name>CreatXML</servlet-name>
      <servlet-class>CreatXML</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>CreatXML</servlet-name>
      <url-pattern>/CreatXML</url-pattern>
  </servlet-mapping>

</web-app>

java

 1 import javax.servlet.*;
 2 import javax.servlet.http.*;
 3 import java.io.*;
 4 public class CreatXML extends HttpServlet {
 5     public void init() throws ServletException{}
 6     public void destroy() {super.destroy();}
 7     public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
 8         doPost(request, response);
 9     }
10     public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
11         response.setContentType("text/xml");
12         response.setCharacterEncoding("UTF-8");
13         String selected=request.getParameter("selected");
14         PrintWriter out=response.getWriter();
15         out.println("<response>");
16         if(selected.equals("1")) {
17             out.println("<city>");
18             out.println("<cityname>changsha</cityname>");
19             out.println("<cityvalue>1</cityvalue>");
20             out.println("</city>");
21             out.println("<city>");
22             out.println("<cityname>xiangtan</cityname>");
23             out.println("<cityvalue>2</cityvalue>");
24             out.println("</city>");
25             out.println("<city>");
26             out.println("<cityname>zhuzhou</cityname>");
27             out.println("<cityvalue>3</cityvalue>");
28             out.println("</city>");
29         }
30         else {
31             out.println("<city>");
32             out.println("<cityname>guangzhou</cityname>");
33             out.println("<cityvalue>1</cityvalue>");
34             out.println("</city>");
35             out.println("<city>");
36             out.println("<cityname>shenzhen</cityname>");
37             out.println("<cityvalue>2</cityvalue>");
38             out.println("</city>");
39             out.println("<city>");
40             out.println("<cityname>dongwan</cityname>");
41             out.println("<cityvalue>3</cityvalue>");
42             out.println("</city>");
43
44         }
45         out.println("</response>");
46         out.flush();
47         out.close();
48     }
49 }

其实很简单啊

原文地址:https://www.cnblogs.com/cuphoria/p/10518149.html

时间: 2024-11-04 08:41:44

【示例】教你简单用Java写一个动态更新的下拉列表(无数据库)的相关文章

感觉Java写一个窗口真心简单,很易上手

上学期学习了Java ,感觉Java写一个窗口真心简单,很易上手,也就难怪很多开发人员选择Java作为自己的开发编程语言.但是由于自身对windows的热爱,让我觉得c.c++语言才是我亲睐的编程语言,虽然难度大些,但是这才能体现能力所在.其实之前一直想自学一下win32,但是由于时间的显示和种种原因而耽搁了,于是今年暑假决心深入学习win32. 在学习过程中呢,我会在此留下自己的学习心得,当做自己的笔记.初学者可以借鉴,高手可以多多指教,呵呵…… 好了,今天开始做第一课的笔记吧: 学习Win3

用JAVA写一个视频播放器

前言 跳过废话,直接看正文 当年入坑java是因为它的跨平台优势.那时我认为,"编写一次,处处运行."这听上去多么牛逼,应该是所有语言发展的终极之道,java势必会一统天下. 然而事实证明,那时的我还是太年轻. 正所谓鱼和熊掌不可兼得,若要享受跨平台带来的方便,便不可避免地要接受性能上的不足.事实上,java一直在致力于提高虚拟机的性能(JIT等技术),但面对对实时计算性能要求很高或涉及到用硬件优化的任务(视频的硬件编码.解码)时,仍远远比不上c或c++.因此,很少能够看到有人用jav

关于java写一个单例类(面试手写题)

package com.shundong.javacore; /** * java写一个简单的单例类 * @author shundong * */ class Singleton { //使用一个类变量来缓存曾经创建的实例 private static Singleton instance; //对构造进行隐藏(private) private Singleton(){} /** * 提供一个静态方法 * 该方法加入了自定义控制 保证只产生一个Singleton对象 * @return 返回S

用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中

我最近在用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中,第一次写项目,写过这类项目的多多提意见,哪方面的意见都行,有代码或者demo的求赏给我,谢谢

教你简单的去运营一个社区论坛

首先运营是个很宽泛的词.往大说,可以上升到运作,管理,这就包括决策,内容,技术,市场,销售.不考虑金钱和远景很大的话,重要级就是先后顺序.(不自信地说,一家之言,具体有待商榷) 在这里,我理解为题主问的是狭义的运营,即针对内容团队.其他因素完全忽略.当然,除非内容端是无可取代性,否则狭义运营再好,也白搭.俗话叫,不怕神一样的对手,就怕……. 回归问题,从内容端入手首先保证三个关键词,稳定,规律,及时.重要性同样是先后顺序. 这里应该会有不同观点,即及时.常关注互联网的人的人回知道这么一句话,唯快

用JAVA写一个函数,功能如下: 任意给定一组数, 找出任意数相加之后的结果为35(任意设定)的情况

用JAVA写一个函数.功能如下:任意给定一组数,例如{12,60,-8,99,15,35,17,18},找出任意数相加之后的结果为35(任意设定)的情况. 可以递归算法来解: package test1; import java.util.Arrays; public class demo { public static void main(String[] args) { String str = "12,60,-8,99,15,35,17,18,8,10,11,12"; int s

五:用JAVA写一个阿里云VPC Open API调用程序

用JAVA写一个阿里云VPC Open API调用程序 摘要:用JAVA拼出来Open API的URL 引言 VPC提供了丰富的API接口,让网络工程是可以通过API调用的方式管理网络资源.用程序和软件管理自动化管理网络资源是一件显著提升运维效率和网络生产力的事情.产品经理教你写代码系列文章的目标是不懂代码的网络工程师能一步一步的学会用API管理网络. 另外通过文章标题大家也可以看出来,产品经理教你写代码肯定是一个业余班,里面的代码很多写的都不规范,可能也有很多Bug.专业选手可以参考的有限,请

vue+vuex+axios+echarts画一个动态更新的中国地图

一. 生成项目及安装插件 # 安装vue-cli npm install vue-cli -g # 初始化项目 vue init webpack china-map # 切到目录下 cd china-map # 安装项目依赖 npm install # 安装 vuex npm install vuex --save # 安装 axios npm install axios --save # 安装 ECharts npm install echarts --save 二. 项目结构 ├── ind

Java写一个简单学生管理系统

其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来做一个有界面的学生管理系统.其实都并不会太难. 今天我就先写一个简单的用List来实现学生管理系统: 首先,管理系统是针对学生对象的,所以我们先把学生对象就写出来: package bean; public class Student { String name; String studentId;