前言:
要想实现列表级联,需要动态的添加选项。选择标签 <select> 选项<option> ,要想实现列表级联。建议先看w3c中,dom对象中的select。
第一步:先来分析select对象的属性和方法,通过w3cschool可以发现,select有options[]集合属性,和add()方法,于是乎,好像问题就变得简单了,直接往里面加就行了。
先看一下实例代码
<html> <head> <script type="text/javascript"> function insertOption() { var y=document.createElement('option'); y.text='Kiwi' var x=document.getElementById("mySelect"); try { x.add(y,null); // standards compliant } catch(ex) { x.add(y); // IE only } } </script> </head> <body> <form> <select id="mySelect"> <option>Apple</option> <option>Pear</option> <option>Banana</option> <option>Orange</option> </select> <input type="button" onclick="insertOption()" value="Insert option" /> </form> </body> </html>
代码分析:通过上面的代码可以发现,我们往选项集合中添加的是option对象,var y=document.createElement('option');
于是乎,现在问题好像变得不是问题了,现在来看一下我写的代码:
<html> <head> <title>列表级联</title> <script type="text/javascript"> function checkCity(){ } function addCity(){ var array= new Array(["成都","新津县","金牛区"],["眉山","东坡区","丹棱县"]); var sel_city=document.getElementById("city"); var sel_xian=document.getElementById("xian"); var y=document.createElement('option'); //这里表示选中的是第几个选项,这里第几个我们就添加第几个的县城 var cityID=sel_city.selectedIndex; //先遍历二维数组的每一排,的第一个元素,找到匹配的城市,再添加县城 //二维数组的变量,数组名字.length是代表有多少行,数组名字[i],表示这个有多少列,数组名字[i][j],表示特定的一个元素 for(var i=0;i<array.length;i++){ var b=i+1; if(cityID==b){ //先将原来的清空,只保留最上面的那个选中提示项 //直接设置数组的长度,将是截断和增长的效果 sel_xian.options.length=1; for(var j=1;j<array[i].length;j++){ try{ y.text=array[i][j]; sel_xian.options.add(y);// standards compliant } catch(ex){ y.text=array[i][j];; sel_xian.add(y,null);// IE only } } break; } } } </script> </head> <body> <select id="city" name="city" onChange="addCity()"> <option>--选择城市--</option> <option>--成都--</option> <option>--眉山--</option> </select> <select id="xian" name="xian"> <option>--县城--</option> </select> </body> </html>
您发现了坑在哪里吗?
代码分析:
我上面的代码号称也是模仿实例代码的高仿真代码,那么现在问题来了?运行上面的代码会发现,不管网options集合中添加了几次,最后只添加了最后一次的结果。于是看似简单问题,程序猿又要抓耳捞腮了。
原因分析:
options集合理解存放的是option对象,上面的代码只是再不断的改变对象的属性。如果我们在list列表中不断加入同一个对象是可以的,但是这里options集合机制明显就是set集合机制,不能存放重复的对象,这也是醉了,又不能像java一样重写他的比较方法。
所以坑就在这里,options集合是不能放入重复的对象的,下面的代码才是正确的。。。。。
<html> <head> <title>列表级联</title> <script type="text/javascript"> function checkCity(){ } function addCity(){ var array= new Array(["成都","新津县","金牛区"],["眉山","东坡区","丹棱县"]); var sel_city=document.getElementById("city"); var sel_xian=document.getElementById("xian"); //这里表示选中的是第几个选项,这里第几个我们就添加第几个的县城 var cityID=sel_city.selectedIndex; //先遍历二维数组的每一排,的第一个元素,找到匹配的城市,再添加县城 //二维数组的变量,数组名字.length是代表有多少行,数组名字[i],表示这个有多少列,数组名字[i][j],表示特定的一个元素 for(var i=0;i<array.length;i++){ var b=i+1; if(cityID==b){ //先将原来的清空,只保留最上面的那个选中提示项 //直接设置数组的长度,将是截断和增长的效果 sel_xian.options.length=1; for(var j=1;j<array[i].length;j++){ try{ var y=document.createElement('option'); y.text=array[i][j]; sel_xian.options.add(y);// standards compliant } catch(ex){ y.text=array[i][j];; sel_xian.add(y,null);// IE only } } break; } } } </script> </head> <body> <select id="city" name="city" onChange="addCity()"> <option>--选择城市--</option> <option>--成都--</option> <option>--眉山--</option> </select> <select id="xian" name="xian"> <option>--县城--</option> </select> </body> </html>
相关推荐
它支持TDM(Time Division Multiplexing,时分复用)级联模式,允许多颗ES7210芯片连接,从而增加麦克风输入通道的数量。这种特性使得ES7210成为构建复杂音频系统的理想选择,特别是那些需要处理多路音频信号的应用...
在Java的持久化框架Hibernate中,Many-to-Many关系是一种常见的数据库表之间的关联方式,它表示一个实体可以与多个其他实体进行关联,反之亦然。本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、...
在数字时代,图像数据的安全性成为了一个不容忽视的问题。光学图像加密技术作为一种新兴的加密方式,因其潜在的高...随着光学加密技术的进一步发展,该方法有望在未来的安全通信、数据存储等多个领域发挥更大的作用。
5. **布局文件**:级联下拉列表的UI设计在XML布局文件中完成,每个Spinner都有对应的XML标签。同时,布局文件也可能包含触发事件监听的触发器,如onClick属性。 6. **Activity和Fragment**:在Android应用中,级联...
《Spectrum Microwave Cascade 7.0 - 深入理解RF级联频谱分析》 在无线通信和射频(RF)系统设计中,级联频谱分析是至关重要的一个环节。Spectrum Microwave Cascade 7.0是一款专为此类任务而设计的专业软件,它能够...
全国省-市-区县-街道-居委会级联关系,不保证完整,注意上传时间,使用sqlite保存,请自己手动json导出
第七章_Hibernate_-_级联策略 第七章
二级级联选择器通常涉及到两个列表,当选择第一个列表中的某个项时,第二个列表会根据选择的结果更新。在uni-app中,我们需要动态调整第二个列表的`range`值。例如: ```html 请选择省份: <view>{{province}} ...
在javaScript中使下拉列表实现级联更新
基于haar-like级联特征的人脸检测算法,可以直接使用,有一定的抗旋转干扰能力。
标题中的“人工智能-深度学习-计算机视觉-LBP级联+CNN 回归定位车牌”揭示了这个项目的核心技术,它涉及到人工智能领域的多个重要分支。在这个系统中,深度学习被用作核心工具,通过计算机视觉技术来实现对车辆车牌...
级联细化网络是一种深度学习模型,它通过多个阶段的精细化处理来逐步提高图像的质量。在每个阶段,模型都会接收前一阶段的结果作为输入,并对其进行微调,以获得更精细的细节。这种方法的优点在于,它可以避免一次性...
综上所述,《电子功用-混合级联多电平静止同步补偿装置和风电机组供电系统》这篇文档全面解析了HDC-MSSC在风能领域的应用,对于理解电力系统稳定性和风电机组供电技术有极大的参考价值。通过深入学习,读者不仅能...
在本文中,我们将深入探讨Element-UI框架中的级联菜单(Cascader)组件,特别是在实现城市三级联动菜单以及处理回显问题时所遇到的技术细节。Element-UI是一款基于Vue.js的高质量UI组件库,提供了丰富的组件供开发者...
全国省市区街道的json数据
STM32单片机通过LTC6804-1读取级联电池电压软件程序工程源码 int main(void) { RCC_Configuration(); GPIO_Configuration(); //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_Config() ; ...
2. 级联列表有什么用? 3. 怎么实现相应的操作? 4. 两种方法实现对应省市的下拉操作 一、什么是级联? 1.级联还指用来设计一对多关系。举个例子:一个表存放学生的信息:表A(姓名,性别,年龄),姓名为主键。还有...
这种技术在多个领域都有广泛应用,包括制造业、运输、医疗设备等。在电子政务的背景下,直线电机可能涉及到以下几个关键知识点: 1. **数据传输与处理加速**:直线电机可以用于高速数据传输系统的硬件组件,比如磁...
网络游戏-基于级联神经网络结构的蛋白质关联图的预测方法.zip