• JavaScript(五)


    级联效果

    下拉列表框

    1.利用省份下拉框的选项改变事件onChange
    2.根据用户选择的省份,动态添加城市下拉框的值

    下拉列表框SELECT
    常用属性
      length:选项的数量
      value:每个选项的value值
      options:所有选项的集合(选项的数组)
      selectedIndex:选中的选项在options中的索引

    选项数组
      1、每个选项Option可以动态创建
        new Option("显示内容","值")
      2、动态添加选项
        selCity.options.add(newOption1)
      3、清除选项
        selCity.options.length=0

    下拉列表框的基本用法实例:

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    <select id="province">
        <option value="js">江苏省</option>
        <option value="sd">山东省</option>
        <option value="zj">浙江省</option>
    </select>
    </body>
    </html>
    
    <script type="text/javascript">
        //获取下拉列表框
        var sel = document.getElementById("province");
        //获取下拉列表框的选项的数量
        console.log(sel.length);
        length属性可读可写(确定数组长度只剩一个,用来从后往前开始删除)
        sel.length = 1;
    
        //通过options根据索引删除选项(删除指定的元素:索引从0开始)
        sel.options.remove(1);
        //添加新的选项 第一个参数表示选项的文本值,第二个参数表示选项的值(value)
        sel.options.add(new Option("海南省","hn"));
    
        //绑定选项变更的事件
        sel.onchange = function(){
            //获取选项的值
            alert(this.value);
            //获取选中项的索引 从0开始
            alert(this.selectedIndex);
        }
    </script>

    数组:

    创建方式三种:

    第一种:

    var  array=new Array();
    array[0]=“A”;
    array[1]=“B”;
    array[2]=“C”;

    第二种:

    var  array=new Array(“A”,”B”,”C”);

    第三种:

    var  array=[“A”,”B”,”C”];

    数组中常用的方法:

      sort  顺序排列

      reverse  反转内容

      join(string)  将数组中的元素使用字符串连接

      concat(array1,array2)  将两个数组并成一个数组(可以拼接任意多个数组)

      slice(start,end)  截取数组(不包括end对应的元素)

      splice(index,count,item)  删除元素并添加新值:

                      第一个参数:替换开始的索引;

                      第二个参数:替换的元素个数;

                      第三个元素:需要插入的元素值;

      push  将元素添加至最后一个元素

      pop  将数组中最后一个元素删除(可以用变量获取该数值)

      

    如果要删除指定的元素:可以将数组遍历确定其索引,然后对数组进行 截取 加 拼接

    function deleteArray(array,value){
         //查找元素的索引,默认该元素不存在
         var index = -1
         //遍历数组
         for(var i = 0; i < array.length; i++){
             if(array[i] == value){
                 //记录索引
                 index = i;
                 break;
             }
         }
         if(index != -1){
             //截取删除元素的前后部分
             var before = array.slice(0,index);
             var after = array.slice(index+1);
             //拼接数组
             var newArray = before.concat(after);
             return newArray;
         }
         return array;
    }

     用splice(index,count)方法实现删除:

    function deleteArray(array,value){
         //查找元素的索引,默认该元素不存在
         var index = -1
         //遍历数组
         for(var i = 0; i < array.length; i++){
             if(array[i] == value){
                 //记录索引
                 index = i;
                 break;
             }
         }
         if(index != -1){
            //如果第三个元素不写,就是将这个元素删除,不插入值
             var newArray = splice(index,1);
             return newArray;
         }
        //如果没找到就返回原数组
         return array;
    }

    数组的常用方法示例:

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    
    </body>
    </html>
    <script type="text/javascript">
        var array = new Array("D","A","E","F","C","B");
    
        //对数组进行排序
        //只能进行升序排列
        array.sort();
    
        //对数组进行反转
        //先升序排列,再进行反转可以实现降序排列
        array.reverse();
        
        //将数组的每个元素根据指定参数拼接成一个字符串
        var str = array.join("#");
        console.log(str);  //(A#B#C#D#E#F)
        
        //将两个数组合并为一个数组
        var array1 = new Array("A","B","C");
        var array2 = new Array("a","b","c");
        var newArray = array1.concat(array2);
        console.log(newArray);
        
        //根据索引截取数组
            //从索引2的位置一直截取到数组最后一个元素
        array = array.slice(2);
        //从索引2的位置一直截取到索引4为止
        array = array.slice(2,4);
        
        //将元素写入数组的最后
        array.push("X");
        //将最后个元素删除,并返回删除的元素
        var value = array.pop();
        console.log(value);
    
        //将指定索引的元素替换成新的元素值
        //第一个参数表示替换的起始索引,第二个参数表示替换的元素数量,第三个参数表示替换的新值
        array.splice(1,2,"a");
        
        //如果第三个参数没有填写,则表示根据指定索引位置删除指定的元素的数量
        array.splice(1,2);
    
    
        function deleteArray(array,value){
            //查找元素的索引,默认该元素不存在
            var index = -1
            //遍历数组
            for(var i = 0; i < array.length; i++){
                if(array[i] == value){
                    //记录索引
                    index = i;
                    break;
                }
            }
            if(index != -1){
                //截取删除元素的前后部分
                var before = array.slice(0,index);
                var after = array.slice(index+1);
                //拼接数组
                var newArray = before.concat(after);
                return newArray;
            }
            return array;
        }
    
        array = deleteArray(array,"E");
    
        console.log(array);
    </script>

    通过选项1的选中内容自动添加选项2的选项内容(手动添加+数组循环添加)

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    <select id="province">
        <option>--请选择--</option>
        <option >江苏</option>
        <option >山东</option>
        <option >浙江</option>
    </select>
    <select id="city">
        <option>--请选择--</option>
    </select>
    </body>
    </html>
    <script type="text/javascript">
        //获取下拉列表框对象
        var province = document.getElementById("province");
        var city = document.getElementById("city");
        //存储所有城市的数组
        var array = new Array();
        array[0] = new Array("苏州","无锡","南京");
        array[1] = new Array("青岛","济南","烟台");
        array[2] = new Array("杭州","嘉兴","宁波");
    
    
        province.onchange = function(){
            //删除之前的城市选项
            city.length = 1;
            //获取选择的省份的索引
            var index = province.selectedIndex;
            //根据省份的索引将对应的城市选项添加至城市下拉列表框
            //手动添加
                // if(index == 1){
            //     var city1 = new Option("苏州","sz");
            //     var city2 = new Option("无锡","wx");
            //     var city3 = new Option("南京","nj");
            //     city.options.add(city1);
            //     city.options.add(city2);
            //     city.options.add(city3);
            // }
            // else if(index == 2){
            //     var city1 = new Option("青岛","qd");
            //     var city2 = new Option("济南","jn");
            //     var city3 = new Option("烟台","yt");
            //     city.options.add(city1);
            //     city.options.add(city2);
            //     city.options.add(city3);
            // }
            // else if(index == 3){
            //     var city1 = new Option("杭州","hz");
            //     var city2 = new Option("嘉兴","jx");
            //     var city3 = new Option("金华","jh");
            //     city.options.add(city1);
            //     city.options.add(city2);
            //     city.options.add(city3);
            // }
            
            //使用数组,根据选择的省份的索引,动态添加城市
            for(var i = 0; i < array[index-1].length; i++){
                //添加选项
                city.options.add(new Option(array[index-1][i],array[index-1][i]));
            }
        }
    </script>            

     例子:实现日期的级联效果,要求在界面中显示年月日,年(2020-2050)月(1-12)日(根据年月判断日期)

     

    例子:通过数组进行实现抽奖效果

      通过随机遍历获取数组中的值

      通过innerHTML将数组中的值写入文本框中

      写入以后将该值从数组中删除

      

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <style type="text/css">
        .container{
             400px;
            border: 1px solid;
            margin: auto;
            margin-top: 100px;
        }
        .content{
            height: 400px;
            background-color: gray;
            color: white;
            font-size: 50px;
            line-height: 400px;
            text-align: center;  //居中显示
        }
        .btnDiv{
            text-align: center;
        }
        .result{
            color: #363CD2;
             1000px;
            margin: auto;
            margin: 50px;
        }
    </style>
    <body>
      <div class="container">
           <!-- 滚动抽奖字幕 -->
          <div class="content">admin</div>
          <!-- 抽奖按钮 -->    <div class="btnDiv">    <input type="button" class="btn" value="抽奖" name="">    </div>   </div>
    <!-- 中奖的结果名单 -->   <div class="result"></div> </body> </html> <script type="text/javascript"> //存储抽奖的名单 var array = new Array("梅明川","伟文浩","温浩","顾明宇","黄进午","徐泽", "李裕涛","钮胜","宫凤丽","杭文鹏","宣磊"); var content = document.querySelector(".content"); var btn = document.querySelector(".btn"); var result = document.querySelector(".result"); //定时器 var timer; /** * 轮播显示中奖信息 * [play description] * @return {[type]} [description] */ function showName(){ //产生一个随机索引:如果是5个人,则需要产生0-4,则将0-1乘以人数产生结果0.00001-5.99999,然后parseInt使其丢失精度(或者用Math.floor向下取整) var index = parseInt(Math.random()*array.length); //根据索引获取数组中的元素 var value = array[index]; //将元素显示在层中 content.innerHTML = value; //开启定时器反复显示抽奖的信息 timer = window.setTimeout("showName()",50); }
      //调用显示名单的方法 showName();   //点击按钮之后需要执行的操作 btn.onclick
    = function(){
         //如果值为抽奖,则点击后出现中奖名单(停止循环并将抽到的并获取该元素的值查找索引后将元素删除)
    if(this.value == "抽奖"){ //点击关闭按钮就要关闭定时器 window.clearTimeout(timer); //获取content中目前显示的值,写入中奖名单的层中 var value = content.innerHTML; //获取元素在数组中的索引 var index = arrayIndex(array,value); //将该值从数组中删除 array.splice(index,1); //将该值显示在result层中 result.innerHTML+="<span style='margin-right:20px'>"+value+"</span>"; //修改按钮的文本 this.value = "继续"; console.log(array.length); //数组的长度,如果长度为0 if(array.length == 0){ content.innerHTML = "GameOver"; //禁用按钮 btn.disabled = true; } }
         //如果按钮是继续,则继续循环名单
    else{ showName(); this.value = "抽奖"; } }
       //获取元素索引的方法
    function arrayIndex(array,value){ for(var i = 0; i < array.length; i++){ if(array[i] == value){ return i; } } } </script>
  • 相关阅读:
    ubuntu 15.04默认root用户登陆
    hive的not in
    Spark 1.4.1中Beeline使用的gc overhead limit exceeded
    Sequoiadb该如何选择合适的SQL引擎
    scala的object知识点
    scala中同步块
    英语口语练习系列-C36-城市-谈论活动-登高
    英语口语练习系列-C35-马戏-谈论语言-己亥杂诗
    英语口语练习系列-C34-儿童-谈论物品和人-武陵春
    英语口语练习系列-C33-露营-谈论日期-离思
  • 原文地址:https://www.cnblogs.com/gfl-1112/p/12865863.html
Copyright © 2020-2023  润新知