JavaScript---网络编程(11)--DHTML技术演示(4)-单选框/下拉菜单/添加文件-1

简介: JavaScript---网络编程(11)--DHTML技术演示(4)-单选框/下拉菜单/添加文件

本节讲述单选框/下拉菜单/添加文件,综合css,html和JavaScript。

单选框:

实现的功能是:(类似平时的性格测试)
先隐藏一部分页面,然后通过点击单选框来显示。
再通过选项的选择-(每个选项有不同的积分)积分的多少来给出评语

演示代码:

<html>
  <head>
    <title>DHTML技术演示---radio的使用</title>
    <meta http-equiv="content-Type" content="text/html; charset=utf-8"/>
    <style type="text/css">
        #contentid{
            display:none;/*显示:默认隐藏*/
        }
        ul{/*无序列表*/
            background-color:#80ff00;/*背景色*/
            list-style:none;//前面的默认小圆点取消
            margin:0px;//外补丁
        }
        ul li{/*设置ul中的li的字体颜色*/
            color:#ff0000;
        }
        .close{
            display:none;
        }
        .open{
            display:block;
        }
    </style>
    <script type="text/javascript">
        function showContent(oRadioNode){
            var oDivNode = document.getElementById("contentid");
            if(oRadioNode.value=="yes"){
                oDivNode.style.display="block";             
            }else{
                oDivNode.style.display="none";
            }
            //第二种方式:利用with
            /*
            with(oDivNode.style){
                if(oRadioNode.value=="yes"){
                    display="block";
                }else{
                    display="none";
                }
            }
            */
        }
        function showResult(){
            var oNolRadioNodes = document.getElementsByName("nol");
            var val=0;
            //undefined如果被用作boolean型也是false
            //alert(val);
            for(var x=0;x<oNolRadioNodes.length;x++ ){
                //找到那个被选中的单选框
                if(oNolRadioNodes[x].checked){
                    val = parseInt( oNolRadioNodes[x].value );
                    break;
                }
            }
            if(!val){
                document.getElementById("erroinfo").innerHTML="没有任何答案被选中".fontcolor("red");
                return;
            }
            //错误信息赋值为空。
            document.getElementById("erroinfo").innerHTML="";
            if(val>=1 && val<=3){
                document.getElementById("res_1").className="open";
                document.getElementById("res_2").className="close";
            }else{
                document.getElementById("res_1").className="close";
                document.getElementById("res_2").className="open";
            }
        }
    </script>
  </head>
  <body>
    <div>
        您要参与问卷调查吗?<br/>
        <!--radio 单选框 name一样就是互斥-->
        <input type="radio" name="wenjuan" value="yes" onclick="showContent(this)"/> 是
        <input type="radio" name="wenjuan" value="no" onclick="showContent(this)" checked="checked" /> 否
        <br/>
    </div>
    <div id="contentid">
        问卷调查内容:<br/>
        您的姓名:<input type="text" name="name" /><br/>
        您的电话:<input type="text" name="tel"/ >
    </div>
    <hr/>
    <h2>欢迎您参与性格测试</h2>
    <h3>第一题:</h3>
    <span>您喜欢的水果是什么?</span>
    <ul id="nolul">
        <li><input type="radio" name="nol" value="1"/> 葡萄</li>
        <li><input type="radio" name="nol" value="2"/> 西瓜</li>
        <li><input type="radio" name="nol" value="3"/> 苹果</li>
        <li><input type="radio" name="nol" value="4"/> 芒果</li>
        <li><input type="radio" name="nol" value="5"/> 樱桃</li>
    </ul>
    <div>
        <input type="button" value="查看测试结果" onclick="showResult()">
        <span id="erroinfo"></span>
        <div id="res_1" class="close">1-3分:你的性格偏内向,建议。。。</div>
        <div id="res_2" class="close">4分以上:你的性格偏外向,建议。。。</div>
    </div>
  </body>
</html>



下拉列表:

简单的演示代码:

<html>
  <head>
    <title>DHTML技术演示---select的使用</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <style type="text/css">
        .clrclass{
            height:50px;
            width:50px;
            float:left;/*漂浮*/
            margin-right:30px;
            margin-bottom:20px;/*下-外补丁*/            
        }
        #text{
            clear:left;/*左边不能漂浮*/
        }
    </style>
    <script type="text/javascript">
        function changeColor( oDicClrNode ){
            //得到要设置的颜色对象
            var colorVal = oDicClrNode.style.backgroundColor;
            //alert(colorVal);
            //设置字体的颜色
            document.getElementById("text").style.color=colorVal;
        }
        function changeColor2(){
            //alert("aabb");//试试能不能监听
            var oSelectNode = document.getElementsByName("selectColor")[0];
            var collOptionNodes =oSelectNode.options;//options 获取 select 对象中 option 对象的集合。 
//          for(var x=0;x<collOptionNodes.length;x++){
//              alert( collOptionNodes[x].innerHTML );
//          }//遍历一下。
            //选中的选项
            //alert( collOptionNodes[ oSelectNode.selectedIndex ].innerHTML );
            var colorVar = collOptionNodes[ oSelectNode.selectedIndex ].value;
            document.getElementById("text").style.color=colorVar;
        }
        function changeColor3(){
            var oSelectNode = document.getElementsByName("selectColor")[1];
            var collOptionNodes = oSelectNode.options;
            var colorVar = collOptionNodes[ oSelectNode.selectedIndex ].value;
            document.getElementById("text").style.color=colorVar;
        }
    </script>
  </head>
  <body>
    <div class="clrclass" id="clr1" style="background-color:black" onclick="changeColor(this)"></div>
    <div class="clrclass" id="clr1" style="background-color:red" onclick="changeColor(this)"></div>
    <div class="clrclass" id="clr2" style="background-color:green" onclick="changeColor(this)"></div>
    <div class="clrclass" id="clr3" style="background-color:blue" onclick="changeColor(this)"></div>
    <div class="clrclass" id="clr4" style="background-color:#c0c0c0;" onclick="changeColor(this)"></div>
    <div class="clrclass" id="clr5" style="background-color:#00ffff" onclick="changeColor(this)"></div>
    <div id="text">
        <img src=""/><br/>
        显示效果文字<br/>
        显示效果文字<br/>
        显示效果文字<br/>
        显示效果文字<br/>
    </div>
    <hr/>
    <!-- //本例,给select注册onclick事件不合适,因为每次点击下拉菜单最外层时就会执行
       <select name="selectColor" onclick="changeColor2()">
    -->
    <br/>
    <select name="selectColor" onchange="changeColor2()">
        <option value="black">--选择颜色--</option>
        <option value="red">红色</option>
        <option value="green">绿色</option>
        <option value="blue">蓝色</option>
        <option value="#c0c0c0">银色</option>
    </select>
    <hr/>
    <select name="selectColor" onchange="changeColor3()">
        <!--background-color 设置背景色 -->
        <option value="black" style="background-color:black">--选择颜色--</option>
        <option value="red" style="background-color:red"> </option>
        <option value="green" style="background-color:green"> </option>
        <option value="blue" style="background-color:blue"> </option>
        <option value="#c0c0c0" style="background-color:#c0c0c0"> </option>
    </select>
  </body>
</html>

360浏览器8.1 演示结果:

这个下拉框是用文字来说明。

image.png

image.png

加强的下拉列表-二级连动菜单-代码演示:

实现的功能就是,根据第一个菜单的选项,来决定第二个菜单的显示。

<html>
  <head>
    <title>DHTML技术演示---select的使用--二级连动菜单</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script type="text/javascript">
        function selectCity(){
            //json: 用一个二维数组存储"省份-城市集合",以后该数据要来自后台
            var collProvices ={"beijing" : ['海淀区','东城区','西城区','朝阳区'],
                       "zhejiang"     : ['杭州','宁波','金华','温州'],
                       "hunan"     : ['益阳','长沙','株洲','湘潭'],
                       "jiangxi"     : ['南昌','九江','萍乡','上饶']
                       };
            //{}这个是用来存key:value的,value可以是任意类型(数组集合都可以)、[]这个是数组
            //alert(collProvices["beijing"][2]);//西城区
            //获取用户所选择省份的下辖城市集合
            var oSelNode = document.getElementById("selid");
            var index = oSelNode.selectedIndex;// selectedIndex选中哪项,返回数字
            var proviceName = oSelNode.options[index].value;//获得选中的那项的value
            var arrCities = collProvices[proviceName];//获得选中的那个省份的下辖城市数组
            var oSubSelNode = document.getElementById("subselid");//获得第二个下拉列表对象
            //把下拉菜单"subselid"中原有的内容清空
            //注意,数组删除之后,长度是自动更新的
            //法1--列表从前面开始移除
//          for(var x=1;x<oSubSelNode.options.length;){//注意,数组删除之后,长度是自动更新的,因此for最后不要用"x++"修正
//              oSubSelNode.removeChild( oSubSelNode.options[x] );
//          }
            //oSubSelNode.length和oSubSelNode.options.length的值一样
            //oSubSelNode[x]和oSubSelNode.options[x]一样
            //法2--列表从后面开始移除
//          for(var x=oSubSelNode.length-1;x>=1;x--){
//              oSubSelNode.removeChild( oSubSelNode[x] );
//          }
            //法3--直接给oSubSelNode.options.length或oSubSelNode.length赋值
            oSubSelNode.options.length=1; //长度设置为1 ,那么剩余的选项自动被删掉
            //把城市集合中的每个元素添加到下拉菜单"subselid"当中
            for(var x=0;x<arrCities.length;x++){
                var optionNode = document.createElement("option");
                optionNode.innerHTML=arrCities[x];
                //oPtionNode.value=...[x];//正式开发,应该还有该选项对应的value值要赋,这里我们就省略了。
                oSubSelNode.appendChild(optionNode);
            }
        }
    </script>
  </head>
  <body>
    <select id="selid" onchange="selectCity()">
        <option>--选择省份--</option>
        <option value="beijing">北京</option>
        <option value="hunan">湖南</option>
        <option value="zhejiang">浙江</option>
        <option value="jiangxi">江西</option>
    </select>
    <select id="subselid">
        <option>--选择城市--</option>
    </select>
  </body>
</html>

360浏览器8.1 演示结果:

image.png

image.png

目录
相关文章
|
28天前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
29天前
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
109 2
|
21天前
|
移动开发 网络协议 NoSQL
不为人知的网络编程(十七):冰山之下,一次网络请求背后的技术秘密
本文将抛弃千篇一律的计网知识理论,从现实的互联网技术实践角度,一步步为你分享一次网络请求背后的技术秘密。
42 0
|
1月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
33 0
|
4天前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
16 1
|
18天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
17 3
|
2月前
|
前端开发 JavaScript API
前端JS读取文件内容并展示到页面上
前端JavaScript使用FileReader API读取文件内容,支持文本类型文件。在文件读取成功后,可以通过onload事件处理函数获取文件内容,然后展示到页面上。
67 2
前端JS读取文件内容并展示到页面上
|
1月前
|
缓存 前端开发 JavaScript
探索JavaScript的现代前端技术:从基础到进阶
探索JavaScript的现代前端技术:从基础到进阶
49 1
|
2月前
|
JavaScript 前端开发 数据安全/隐私保护
混淆指定js文件
【9月更文挑战第26天】JavaScript 混淆旨在保护代码知识产权、减小文件体积和提高安全性。方法包括变量名和函数名混淆、代码压缩、控制流平坦化及字符串加密。常用工具如 UglifyJS 和 JScrambler 可实现这些功能。然而,混淆可能带来兼容性和调试困难等问题,需谨慎使用并确保法律合规。
|
23天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
113 0