web前端开发个人技术博客
当前位置: 前端技术 > js通过另外一个下拉菜单已选选项来修改当前下拉菜单的选项

js通过另外一个下拉菜单已选选项来修改当前下拉菜单的选项

2018-10-12 分类:前端技术 作者:码云 阅读(94)

如何通过js将另外一个下拉菜单已选选项来修改当前下拉菜单的选项,这个效果我们在项目中经常见到,今天为大家整理下来提供学习,这里需要用到一些select对象的知识,先看一下效果图,再补充相关知识,最后将源码附上。

js通过另外一个下拉菜单已选选项来修改当前下拉菜单的选项

Select 对象

Select 对象代表 HTML 表单中的一个下拉列表。

在 HTML 表单中,<select> 标签每出现一次,一个 Select 对象就会被创建。

可通过遍历表单的 elements[] 数组来访问某个 Select 对象,或者使用 document.getElementById()。

Select 对象集合

options 返回包含下拉列表中的所有选项的一个数组。

Select 对象属性

disabled 属性

可设置或返回是否金融下拉列表。

被禁用的 input 元素既不可用,也不可点击。可以设置 disabled 属性,直到满足某些其他的条件为止(比如选择了一个复选框等等)。

语法

设置 disabled 属性:

1
element.disabled=true|false

返回 disabled 属性:

1
element.disabled

form属性

form 属性可返回对包含该下拉列表的表单元素的引用。

该属性返回 form 对象。

语法

1
selectObject.form

length 属性

length 属性可返回下拉列表中选项的数目。

 语法

1
selectObject.length=number

multiple 属性

multiple 属性可设置或返回是否可有多个选项被选中。

语法

设置multiple属性:

1
selectObject.multiple=true|false

返回multiple属性:

1
selectObject.multiple

name 属性

name 属性可设置或返回下拉列表的名称。

语法

设置name属性:

1
selectObject.name=name

返回name属性:

1
selectObject.name

selectedIndex 属性

selectedIndex属性可设置或返回下拉列表中被选选项的索引号。

注意:若允许多重选择,则仅会返回第一个被选选项的索引号。

语法

设置selectedIndex属性:

1
selectObject.selectedIndex=integer

返回selectedIndex属性:

1
selectObject.selectedIndex

size 属性

size 属性可设置或返回下拉列表中一次显示显示的选项数。

语法

设置size属性:

1
selectObject.size=integer

返回size属性:

1
selectObject.size

type 属性

type 属性可返回下拉列表的表单类型。对于下拉列表,类型总是 "select-one" 或 "select-multiple"。

语法

1
selectObject.type

浏览器支持

以上select对象属性所有主流浏览器都支持

Select 对象方法

add() 方法

add() 方法用于向 <select> 添加一个 <option> 元素。

语法

1
selectObject.add(option,before)
参数 描述
option 必需。要添加选项元素。必需是 option 或 optgroup 元素。
before 必需。在选项数组的该元素之前增加新的元素。如果该参数是null,元素添加到选项数组的末尾。

浏览器支持

所有主要浏览器都支持 add() 方法

提示: add() 方法在 IE8 和更高版本的 IE中需要在页面声明 !DOCTYPE 。

实例

向下拉列表的末尾添加一个 "kiwi" 选项

HTML代码:

1
2
3
4
5
6
7
8
9
10
11
<form>
<select id="mySelect">
    <option>Apple</option>
    <option>Pear</option>
    <option>Banana</option>
    <option>Orange</option>
</select>
</form>
<br>
<button type="button" onclick="displayResult()">插入选项</button>
<p><b>注意:</b>add()方法在IE8或更高版本中正常工作,要在页面中添加一个!DOCTYPE声明。对于IE 8之前的版本还要注意额外的代码。</p>

JavaScript代码:

1
2
3
4
5
6
7
8
9
10
11
function displayResult(){
    var x=document.getElementById("mySelect");
    var option=document.createElement("option");
    option.text="Kiwi";
    try{
        // 对于更早的版本IE8
        x.add(option,x.options[null]);
    }catch (e){
        x.add(option,null);
    }
}

remove() 方法

remove() 方法用于从下拉列表删除选项。

语法

1
selectObject.remove(index)
参数 描述
index 必需。规定要删除的选项的索引号。

浏览器支持

所有主要浏览器都支持 remove() 方法

实例

从列表中删除被选的选项:

HTML代码:

1
2
3
4
5
6
7
8
9
<form>
<select id="mySelect">
  <option>Apple</option>
  <option>Pear</option>
  <option>Banana</option>
  <option>Orange</option>
</select>
<input type="button" onclick="removeOption()" value="移除选项">
</form>

JavaScript代码:

1
2
3
4
function removeOption(){
    var x=document.getElementById("mySelect");
    x.remove(x.selectedIndex);
}

以上补充知识完毕,接下来看我们今天主要内容实现方法

首先,HTML放入两个select,一个是选中的,另一个是更具选中的option展示的select

1
2
3
4
5
6
7
8
9
10
11
12
<select id="car" onchange="ChangeCarList();">
    <option value="">-- Car --</option>
    <option value="VO">Volvo</option>
    <option value="VW">Volkswagen</option>
    <option value="BMW">BMW</option>
</select>
<select id="carmodel"></select>
然后,我们在JavaScript中定义一个对象用来存放这些需要的数据值
[cc lang="html"]var carsAndModels={};
carsAndModels['VO']=['V70','XC60','XC90'];
carsAndModels['VW']=['Golf','Polo','Scirocco','Touareg'];
carsAndModels['BMW']=['M6','X5','Z3'];

最后,定义ChangeCarList()方法来做具体操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function ChangeCarList(){
    var carList=document.getElementById("car");
    var modelList=document.getElementById("carmodel");
    var selCar=carList.options[carList.selectedIndex].value;
    while (modelList.options.length){
        modelList.remove(0);
    }
    var cars=carsAndModels[selCar];
    if (cars){
        for (var i=0;i<cars.length;i++){
            var car=new Option(cars[i],i);
            modelList.options.add(car);
        }
    }
}

以上就是全部实现方法,完整代码附上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>码云笔记(mybj123.com)</title>   
<script>
var carsAndModels={};
carsAndModels['VO']=['V70','XC60','XC90'];
carsAndModels['VW']=['Golf','Polo','Scirocco','Touareg'];
carsAndModels['BMW']=['M6','X5','Z3'];
function ChangeCarList(){
    var carList=document.getElementById("car");
    var modelList=document.getElementById("carmodel");
    var selCar=carList.options[carList.selectedIndex].value;
    while (modelList.options.length){
        modelList.remove(0);
    }
    var cars=carsAndModels[selCar];
    if (cars){
        for (var i=0;i<cars.length;i++){
            var car=new Option(cars[i],i);
            modelList.options.add(car);
        }
    }
}
</script>
</head>
<body onload="ChangeCarList();">  

<select id="car" onchange="ChangeCarList();">
    <option value="">-- Car --</option>
    <option value="VO">Volvo</option>
    <option value="VW">Volkswagen</option>
    <option value="BMW">BMW</option>
</select>
<select id="carmodel"></select>

</body>
</html>

「如果觉得我的文章对您有用,请帮助本站成长」

赞(3) 打赏

觉得文章有用就打赏一下文章作者

支付宝
微信
3

觉得文章有用就打赏一下文章作者

支付宝
微信

上一篇:

下一篇:

你可能感兴趣

共有 0 条评论 - js通过另外一个下拉菜单已选选项来修改当前下拉菜单的选项

博客简介

码云笔记: mybj123.com,一个关注Web前端开发技术的博客,主要记录和总结前端工作中常用的知识及我的生活。
更多博客详情请看关于博客

圈子

关注微信公众号
关注微信公众号

精彩评论

服务热线:
 13888888888

 QQ在线交流