zoukankan      html  css  js  c++  java
  • 深入理解表单脚本系列第四篇——选择框脚本

    前面的话

      选择框是通过<select>和<option>元素创建的,又称为下拉列表框。为了方便与这个控件交互,除了所有表单字段共有的属性和方法外,javascript还提供了一些属性和方法。本文将详细介绍选择框脚本

    select

      select元素用来定义一个下拉列表,包含任意数量的option和optgroup元素。select元素包含以下javascript属性

      autofocus     是否在页面加载后文本区域自动获得焦点(IE9-浏览器不支持)

      disabled       是否禁用该下拉列表

      form        表示文本区域所属的一个或多个表单

      multiple       是否可选择多个选项

      name       表示下拉列表的名称

      size         表示下拉列表中可见选项的数目

      options      表示所包含的options的数组

      selectedOptions    表示所选择的options的数组(IE浏览器不支持)

      selectedIndex       表示所选择的第一个option的索引值

    <form id="myForm">
      <select name="select" id="mySelect">
        <option value="1" >1</option>
        <option value="2" selected>2</option>
      </select>
    </form>
    <script>
    var mySelect = document.getElementById('mySelect');
    console.log(mySelect.form);//<form id="myForm">
    console.log(mySelect.name);//'select'
    console.log(mySelect.value);//2
    console.log(mySelect.options);//[option, option, selectedIndex: 1]
    console.log(mySelect.selectedOptions);//[option]
    console.log(mySelect.selectedIndex);//1
    console.log(mySelect.multiple);//false
    console.log(mySelect.size);//0
    console.log(mySelect.autofocus);//false
    console.log(mySelect.disabled);//false
    </script>

      下面对一些重要属性进行详细介绍

    multiple

      multiple属性表示是否允许多项选择

    <select name="test" id="test">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <button id="btn">是否多选</button>
    <script>
    btn.onclick = function(){
        test.multiple = !test.multiple;
    }    
    </script>

    type

      选择框的type属性有两种,一种是'select-one',表示单选;另一种是'select-multiple',表示多选

    <select name="test" id="test">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <button id="btn">是否多选</button>
    <div id="result"></div>
    <script>
    btn.onclick = function(){
        test.multiple = !test.multiple;
        result.innerHTML = test.type;
    }    
    </script>

    value

      选择框的value属性由当前选中项决定

      1、如果没有选中的项,则选择框的value属性保存空字符串

      2、如果有一个选中项,而且该项的value特性已经在HTML中指定,则选择框的value属性等于选中项的value特性。即使value特性的值是空字符串,也同样遵循此条规则

      3、如果有一个选中项,但该项的value特性在HTML中未指定,则选择框的value属性等于该项的文本

      4、如果有多个选中项,则选择框的value属性将依据前两条规则取得第一个选中项的值

      [注意]IE8-浏览器只支持value属性的值,不支持选择的文本值

    <select name="test" id="test">
        <option value="a">1</option>
        <option value="b">2</option>
        <option>3</option>
    </select>
    <button id="btn1">是否多选</button>
    <button id="btn2">获取value值</button>
    <div id="result"></div>
    <script>
    btn1.onclick = function(){
        test.multiple = !test.multiple;
    }    
    btn2.onclick = function(){
        result.innerHTML = test.value;
    }
    </script>

    selectedIndex

      selectedIndex属性返回基于0的选中项的索引,如果没有选中项,则值为-1。对于支持多选的控件,只保存选中项中第一项的索引

    <select name="test" id="test">
        <option value="a">1</option>
        <option value="b">2</option>
        <option>3</option>
    </select>
    <button id="btn1">是否多选</button>
    <button id="btn2">获取索引</button>
    <div id="result"></div>
    <script>
    btn1.onclick = function(){
        test.multiple = !test.multiple;
    }    
    btn2.onclick = function(){
        result.innerHTML = test.selectedIndex;
    }
    </script>

    size

      size属性表示选择框的可见行数

    <select name="test" id="test">
        <option value="a">1</option>
        <option value="b">2</option>
        <option>3</option>
    </select>
    <button id="btn1">可见1行</button>
    <button id="btn2">可见2行</button>
    <button id="btn3">可见3行</button>
    <div id="result"></div>
    <script>
    btn1.onclick = function(){
        test.size = 1;
    }    
    btn2.onclick = function(){
        test.size = 2;
    }
    btn3.onclick = function(){
        test.size = 3;
    }
    </script>

    options

      options属性表示控件中所有的<option>元素

    <select name="test" id="test">
        <option value="a">1</option>
        <option value="b">2</option>
        <option>3</option>
    </select>
    <script>
    //[option, option, option, selectedIndex: 0]
    console.log(test.options)
    </script>

    option

      在DOM中,每个<option>元素都有一个HTMLOptionElement对象表示。为便于访问数据, HTMLOptionElement对象也定义了一些属性

      [注意]IE浏览器不支持为<option>元素设置display:none

    index

      index属性表示当前选项在options集合中的索引

    label

      label属性表示当前选项的标签

      [注意]IE9-浏览器不支持

    selected

      selected属性表示当前选项是否被选中。将这个属性设置为true可以选中当前选项

    text

      text属性表示选项的文本

    value

      value属性表示选项的值

      [注意]在未指定value特性的情况下,IE8会返回空字符串;而其他浏览器返回text属性的值

    <select name="test" id="test">
        <option value="a" selected>1</option>
        <option value="b">2</option>
        <option>3</option>
    </select>
    <script>
    var option = test.options[0];
    console.log(option.index);//0
    console.log(option.label);//1,IE9-浏览器返回空字符串''
    console.log(option.selected);//true
    console.log(option.text);//1
    console.log(option.value);//a
    </script>

    添加选项

      【1】添加选项可以使用DOM的appendChild()或insertBefore()方法

    <select name="test" id="test">
        <option>1</option>
        <option>3</option>
    </select>
    <button id="btn">增加选项2</button>
    <script>
    btn.onclick = function(){
        var newOption = document.createElement('option');
        newOption.innerHTML = 2;
        test.insertBefore(newOption,test.options[1]);
    }
    </script>

      【2】可以使用选择框的add()方法,add(newoption,reloption)方法向控件中插入新<option>元素,其位置在相关项(reloption)之前

      使用Option构造函数来创建新选项,接受两个参数:文本(text)和值(value),第二个参数可选

    <select name="test" id="test">
        <option>1</option>
        <option>3</option>
    </select>
    <button id="btn">增加选项2</button>
    <script>
    btn.onclick = function(){
        var newOption = new Option('2');
        test.add(newOption,1);
    }
    </script>

    移除选项

      与添加选项类似,移除选项的方式也有很多种

      【1】使用DOM的removeChild()方法

    <select name="test" id="test">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <button id="btn">移除选项2</button>
    <script>
    btn.onclick = function(){
        test.removeChild(test.options[1]);
    }
    </script>

      【2】使用选择框的remove()方法。这个方法接受一个参数,即要移除选项的索引

      [注意]使用该方法的好处是,若不存在被移除选项的索引,不会报错,只是静默失败

    <select name="test" id="test">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <button id="btn">移除选项2</button>
    <script>
    btn.onclick = function(){
        test.remove(1);
    }
    </script>

      【3】将相应选项设置为null

      [注意]该方法同样不会报错

    <select name="test" id="test">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <button id="btn">移除选项2</button>
    <script>
    btn.onclick = function(){
        test.options[1] = null;
    }
    </script>

  • 相关阅读:
    Vue 引入 Zepto.js 报错:TypeError: Cannot read property ‘createElement’ of undefined
    VUE项目如何在移动端查看打印日志(console.log)
    将vue项目打包成移动端app
    vue 移动端项目(app)手机测试
    CheckBoxList 用法
    oracle 存储过程的写法
    jq 一些小方法
    根据时间分组
    ajax 异步调用把返回值赋给一个全局变量的用法,最主要的就是把async属性改为 false,
    C#裁剪照片并保存
  • 原文地址:https://www.cnblogs.com/xiaohuochai/p/5877287.html
Copyright © 2011-2022 走看看