选择框的value属性

<select name='location' id='selLocation'>
<option value='Sunnyvale,Ca'>Sunnyvale</option>
<option value='Los Angeles,Ca'>Los Angeles</option>
<option value='Mountain View,Ca'>Mountain View</option>
<option value=''>China</option>
<option>Australia</option>
</select>

如果用户选择了其中第一项,则选择框的值就是'Sunnyvale,Ca',如果文本为'China'的选项被选中,则选择框的值就是一个空字符串,因为其value
特性是空的。如果选择了最后一项,那么由于<option>中没有指定value特性,则选择框的值就是'Australia'.

<option>
每个<option>元素都有一个HTMLOptionElement对象表示,为了便于访问数据,HTMLOptionElement对象添加了下列属性
index:当前选项在options集合中的索引。
label:当前选项的标签;等价于HTML中的label特性。
selected:布尔值,表示当前选项是否被选中。
text:选项的文本。
value:选项的值

var selectbox = document.forms[0].elements['location'];
var text = selectbox.option[0].text; //选项的文本
var value = selectbox.option[0].value; //选项的值

选择选项
1、只允许选择一项对选择框,访问选中项对最简单方式,就是使用选择对selectedIndex属性

var selectedOption = selectbox.options[selectbox.selectedIndex];
//取得选中项之后,可以像下面这样显示该选项对信息:
var selectedIndex = selectbox.selectedIndex;
var selectedOption = selectbox.options[selectedIndex];
console.log('Select index: ' + selectedIndex + '\nSelected text: ' + selectedOption.text + '\nSelected value: ' + selectedOption.value);

2、对于可以选择多项的选择框,有一种选择选项的方式,就是取得对某一项对引用,然后对其selected属性设置为true.

selectbox.options[0].selected = true;

在允许多选对选择框中设置选项对selected属性,不会取消对其他选中项对选择,因而可以动态选中任意多个项。
要取得所有选中对项,可以循环遍历选项集合,然后测试每个选项对selected属性。

function getSelectedOptions(selectbox){
var result = new Array();
var option = null;
for(var i=0,len=selectbox.options.length; i<len; i++){
option = selectbox.options[i];
if(option.selected){
result.push(option);
}
}
return result;
} var selectbox = document.getElementById('selLocation');
var selectedOption = getSelectedOptions(selectbox);
var message = '';
for(var i=0,len=selectedOption.length; i<len; i++){
message += 'Select index: ' + selectedOption[i].index + '\nSelected text: ' + selectedOption[i].text + '\nSelected value: ' + selectedOption[i].value
}

添加选项

1、使用dom方法

var newOption = document.createElement('option');
newOption.appendChild(document.createTextNode('Option text'));
newOption.setAttribute('value', 'Option value');
selectbox.appendChild(newOption);

2、使用Option构造函数,这个构造函数是dom出现之前就有的,一直遗留到现在。Option构造函数接受两个参数

文本(text)和值(value);第二个参数可选

var newOption = new Option('Option text', 'Option value');
selectbox.appendChild(newOption); //在ie8及之前版本中有问题

这种方式在除ie之外的浏览器都可以使用。

3、使用选择框的add()方法。dom规定这个方法接受两个参数:要添加的新选项和将位于新选项之后的选项。

var newOption = new Option('Option text', 'Option value');
selectbox.add(newOption, undefined); //最佳方案

想在列表中的最后添加一个选项,应该将第二个参数设置为null。在ie对add()方法的实现中,第二个参数是可选的,而且如果指定,该参数必须是新选项之后选项的索引。
兼容dom的浏览器要求必须指定第二个参数,因此编写跨浏览器的代码,就不能只传入一个参数。
如果不是最后一个,使用标准的dom技术和insertBefore()方法。

移动选项
1、使用dom的removeChild()方法

selectbox.removeChild(selectbox.options[0]);

2、使用选项框的remove()方法。接受一个参数,索引

selectbox.remove(0);

3、设置选项为null, dom出现之前浏览器的遗留机制。

selectbox.options[0] = null;

4、要清除所有的项,迭代

function clearSelectbox(selectbox){
for(var i=0,len=selectbox.options.length; i<len; i++){
selectbox.remove(0);
}
}

移动和重排选择
1、从一个选择框的选项移动到另一个选择框

var selectbox1 = document.getElementById('selLocation1');
var selectbox2 = document.getElementById('selLocation2');
selectbox2.appendChild(selectbox1.options[0]);

移动选项和移除选项,都会重置每一个选项都index属性

2、重排选择框的顺序

var optionToMove = selectbox.options[1];
selectbox.insertBefore(optionToMove, selectbox.options[optionToMove.index-1]);

表单(三):select的更多相关文章

  1. 表单元素-select

    <form> <select size="2"> <option value="JMS HADEN">JMS HADEN&l ...

  2. vue.js中的表单radio,select,textarea的v-model属性的用法

    只要是表单元素,其值已经不会再用value来定义了,但是placeholder还是可以用来设置默认值. section1--input:type="text" type=" ...

  3. React 之form表单、select、textarea、checkbox使用

    1.案例如下 import React from 'react'; /** * 非约束性组(类似defaultValue等属性,不可以程序修改): <input type="text& ...

  4. Form表单三种提交按钮的区别?

    1.<input type='button' id='btn' onclick='check()' value="提交"> 说明:只是普通的按钮(不附带提交功能),不会 ...

  5. angular $http 与form表单的select

    产品线 产品 版本 代码是联动关系 ng-model 绑定数据 设置默认值 ng-options 填充option ng-change 选项变化时的操作截图如下: html <!DOCTYPE ...

  6. 前端 HTML form表单标签 select标签 option 下拉框

    <select></select> select里面通常跟option配合使用 <!DOCTYPE html> <html lang="en&quo ...

  7. html5 表单 填表 select 下拉 textarea多行文本 output Js计算结果

    <select>     下拉 <select>下有很多属性 name        其实有name就有value了,因为button提交的都是? name=value的格式, ...

  8. 第三百一十一节,Django框架,Form表单验证

    第三百一十一节,Django框架,Form表单验证 表单提交 html <!DOCTYPE html> <html lang="en"> <head& ...

  9. form表单select联动

    下拉列表:二级联动菜单 Select对象的常用属性 options[]:返回所有option组成的一个数组: name:名称 value:option的value的值 length:设置或读取opti ...

随机推荐

  1. C++的静态Static

    类的静态数据成员是属于类(即与类关联)而不属于类的每个对象(不与类的每个对象关联)(相当于该静态对象在所有的类对象中共享.),所以初始化方法与一般的变量不同,需要在类的构造函数之外进行初始化. 类的静 ...

  2. 3dsmax 卸载/安装失败/出错 2019/2018/2017/2016/2015/2013/2012

    AUTO Uninstaller 更新下载地址 1.选择3dsmax 2.选择版本 3.点击“开始卸载”

  3. pat1020. Tree Traversals (25)

    1020. Tree Traversals (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Suppo ...

  4. PHP函数库(概览)

    数组函数: array_change_key_case — 返回字符串键名全为小写或大写的数组 array_chunk — 将一个数组分割成多个 array_column — 返回数组中指定的一列 a ...

  5. Matlab 2013a 和 VS2010 混合编程

    最近由于项目需求,某项目的算法是基于MATLAB完成的,在短时间内需要去调用算法功能.因此,基于MATLAB生成DLL, C 调用的方式完成. 环境:MATLAB 2013a + VS2010 + w ...

  6. 使用mspaint查看图片像素

    图片打码服务,要求对图像验证码进行切图,即具体知道像素的位置,网上搜了yhb-chi但下载不方便. 就想着看看mspaint可不可以,将图片拖到mspaint中: 显示了整张图片的像素大小(100X4 ...

  7. 新建mavent项目报错

    1.找到自己项目 项目名\.settings\org.eclipse.wst.common.project.facet.core.xml 将<installed facet="jst. ...

  8. 轮播图jq版

    轮播图的需求 1:图片自己轮播,并且下面的tabs小图标跟着显示 2.鼠标hover到tabs上面显示对应的图片 3.点击左右按钮,显示下一张图片. <div id="oLunbo&q ...

  9. 【起航计划 017】2015 起航计划 Android APIDemo的魔鬼步伐 16 App->Alarm->Alarm Controller Alarm事件 PendingIntent Schedule AlarmManager

    Alarm Controller演示如何在Android应用中使用Alarm事件,其功能和java.util.Timer ,TimerTask类似.但Alarm可以即使当前应用退出后也可以做到Sche ...

  10. html5 chrome 摄像头 &&bootstrap

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...