您当前的位置:首页 > 互联网教程

原生Javascript做一个地址多级下拉筛选框

发布时间:2025-05-25 12:30:05    发布人:远客网络

原生Javascript做一个地址多级下拉筛选框

一、原生Javascript做一个地址多级下拉筛选框

1、大家在浏览网页时,有没有遇到过下面这样的多级筛选框

2、有没有想过,这里的逻辑判断是如何完成的?接下来,楼主就带领大家利用原生JS语法来完成这样一个多级筛选框,有路过的小伙伴记得留个赞哟!!!!

3、第一步,咱们先创建一个基础的HTML页面。

4、第二步,咱们给HTML页面添加三个表单下拉框,放入body里。

5、第三步,给页面加点样式,让这个下拉框居中显示。

6、此时一个酷炫的三级筛选框就出现啦!!!

7、当然,这是一个没有灵魂,无法和用户交互的筛选框,当我们点击时,并不会有任何东西出现。

8、接下来,我就给他注入灵魂,让它能跟随我们的选择来显示不同的内容。

9、第四步,创建一个script标签,并放入我们需要的数据,当然,因为全国城市太多,楼主这里就只选择了两个省和他们的前两个市及前两个区县,有兴趣的小伙伴可以对照地图将数据补全哈!

10、第五步,咱们正式开始Javascript的逻辑部分,首先,在页面已进入,就应该加载出每个省的数据,供用户进行选择。那么就需要我们对上面对象进行遍历,取出obj对象的每一个属性名。

11、因为对象遍历的方法比较少,所以这里推荐使用Object.key()这个方法取出对象的所有属性值,这个方法会返回给我们一个数组,我们就可以直接对这个数组进行遍历。当然,如果说你非要直接遍历对象的话,也不是不可以,使用for(Keyinobj)就能够遍历对象,这里楼主采用第一种方法。每遍历一个数据我们就生成一个下拉框option。

12、渲染数据也有两种方式,第一种是dom树驱动,就是每遍历一次,就创建并往dom树中追加一个标签。第二种是数据驱动,创建一个空数组,每循环一次,就创建一个标签存入数组里,等遍历结束后,再一次性追加入dom树中,第二中方法因为对dom树操作次数少,可以提高页面加载速度及性能,所以这里选择第二种。map()方法会自动创建并返回一个数组来存放我们遍历产生的新数组,所以这里使用map()方法来遍历数组,就不需要我们在去创建空数组了,只用我们定义一个常量来接收这个数组再把它加载进dom树里即可。

13、当然,我们不能直接把数组加载进,还需要join一下,将数组变成字符串才行。PS这里采用+=赋值是为了避免覆盖默认的下拉框,如果直接采用=赋值,那么页面一打开就会自动加载第一个省,用户体验会很差。当然,后面加载市、县的时候就可以直接赋值,当用户选择省后,市自动变为第一个数据,提醒用户可以选择市了。

14、此时,页面一加载,我们便可以点击省这个下拉框来选择了。

15、第六步,我们就需要根据用户选择的省来加载对应的市了。这里,需要用到事件监听,监听用户改变省下拉框的事件,当change这个事件触发时,我们就立即获取用户选择的省,并立即遍历加载对应的市,综上:

16、同理,加载区县也是在监听到市区发生变化,就立即获取数据渲染

17、那么,写到这里,其实一个简单的小联动效果其实已经可以出来了

18、但是!但是!但是!这也仅仅完成了基本的需求,因为但凡你多操作几步,你就会发现一堆bug在等着你,比如:

19、当然,咱们不能干那种自己拉屎别人擦屁股的事对吧?会出现这种情况是因为我们漏了几个逻辑判断。当用户选择完后面市、区县的筛选框再反过来点击省时,将省改为默认的空状态时,我们要强制将后面的市、区也重置成默认状态,如何完成?我们只需在每次事件一触发,立即清空后面市、县的数据即可,我们将加载市、县的事件监听里加两行代码:

20、以上,即可解决点击省,后面的市、区不重置的问题,如图

21、最后,还有最后一个bug,就是我们一直忽略的那个button重置按钮,这个表单按钮自带重置属性,但是无法满足我们的需求,需要我们再给它添加一点事件,如图:

22、市和县重置后显示有文字是因为我们在渲染时使用了=赋值覆盖了数据,将默认数据覆盖掉了,所以,默认数据显示第一个,当然就算将=号换成+=,也一样会有bug,如:

23、正常我们重置表单后,在未点击省的时候,市和县应该是没有选项才对,但是这里却有显示选项,这是因为数据在我们最开始依次点击时,已经加载了进去,而表单的重置按钮,只会把选项切换到默认选项(就是带有selected属性的标签,如果都没带这个属性,那就显示第一个),而不是删除下拉选项列表,但是我们这里需要删除下拉列表,所以,我们只能手动重置一下了:

24、效果如下,这个简单的小demo就完成了!!!

二、java培训班 学费贵不贵

现在学JAVA的比较多,毕竟这个JAVA地位稳定,至于培训费用,要看你在什么地方学的,线上的还线下,各有优缺点,线上的应该便宜一些,几千的也有,但教学互动不便,有的课程不系统。线下的要分地区分课程,基础课程费用低一些,几千到2W吧,但有针对性的JAVA课程,有完善的课程体系价格要高一点,但学好了后,就业薪资也是很高的,一线城市8K以上不成问题,有的就业就能拿到1W多,地区不同的课程收费也有差异,一线城市更高一些2W以上,二线城市的课程1W多到2W之间,这个要具体的了解培训机构的情况和课程了,云和数据JAVA课程,针对企业真实需求设置课程,更利于就业,想学JAVA的同学可以多对比了解一下。

以下是云和数据JAVA相关课程内容:

1、java基础:基础语法;面向对象(重点);集合框架(重点);常见类库API;

2、java界面编程:AWT;事件机制;Swing;

3、java高级知识:Annotation;IO和NIO、AIO;多线程、线程池;阻塞、非阻塞、异步网络通信;反射、动态代理;

4、SQL基础:基础SQL语句;基本查询;多表查询;子查询;结果集的交、并、差运算;

5、JDBC基础:常见数据库用法;JDBC操作常见数据库;RowSet与离线结果集;数据库连接池;事务管理、批处理;

6、JDBC进阶:存储过程、函数;触发器;理解JCBC的不足;掌握ORM工具优势和设计;

7、HTML基础:基本HTML标签;常见表单标签;DIV+CSS布局;

8、JavaScript知识:javascript基本语法;javascript基本对象特征;Json语法;深刻理解javascript的动态特征;

9、Dom和事件机制:DOM操作、编程;常见浏览器事件机制;掌握用户交互技巧;

10、XML基础:XML基础规则;DTD和SCheme;XML和样式单;

11、XML进阶:DOM、SAX和JAXP;dom4j、JDOM等工具;XQuery和XQJ;基于XML的数据交换;

12、Web Service:JAX_WS2、SAAJ规范;WSDL和SOAP协议;CXF框架、拦截器;CXF整合Spring;

13、Web编程基础:Tomcat服务器;Jsp语法、EL、内置对象;Servlet API;Servlet 3.0注解;Listener和Filter;

14、Web编程进阶:自定义标签库;MVC和DAO、Servlet、标签的作用;JSTL、DisplayTag等常见标签库用法;

15、Web编程原理:请求/响应、架构;Http协议;深刻理解Jsp运行原理;掌握Web容器底层的线程池、socket通信、调用Servlet的命令模式;

16、Ajax编程:XML HttpRequest和异步请求;发送请求和处理响应;常见Ajax库(Prototype、Jquery、ExtJs、DWR)用法;结合Http协议、异步请求深入研究ajax库的设计;

17、Android基础:Android开发调试环境;Android应用结构;界面组件与界面编程;资源管理;四大组件;

18、Android中级:文件IO和SQLite;图形、图像与动画;音频、视频的录制与播放;传感器编程;GPS应用;

19、Android高级:网络编程与Web Service;OpenGL_ES 3D开发;整合Google服务;使用NDK开发;java和c相互调试;

17、Struts2:MVC与struts体系;Action和Result;国际化和标签库;文件上传、下载;类型转换和输入检验;拦截器与插件开发;

18、Hibernate:ORM与持久化映射;关系映射、继承映射;延迟加载、性能调优;HQL查询、条件查询、SQL查询;二级缓存和查询缓存;

19、Spring:IoC与Bean配置、管理;Bean生命周期;SP、EL;AOP与事务权限控制;S2SH整合开发;Spring整合Jpa;

20、JSF<选学>:MVC与JSF设计理念;托管Bean与导航模型;JSF流程与事件机制;JSF标签库;类型转换与输入检验;

21、EJB及相关技术:JNPI与RMI;会话Bean及其生命周期;IoC与EJB拦截器;JMS与MDB;会话Bean与Web Service;

22、JPA:ORM框架与JPA规范;JPA注解与常用API;JTA事务与事务管理;JPQL查询;EJB、JPA整合;

23、Java EE实践与架构:Ant+Ivy或Maven;SVN、CVS;深刻理解10种以上设计模式;掌握各种Java EE架构及各自优势;

24、Workflow:Workflow规范及功能;JBPM等workflow框架;多次重构、反复思考;大型项目经验;

25、Java EE进阶:掌握各MVC框架运行原理、能开发类似框架;掌握Spring、HiveMind、AspectJ等框架原理、能开发类似工具;掌握Hibernate、iBatis等框架原理,能开发类似工具;深入研究EJB机制、大致了解应用服务器的实现。

三、Java培训课程费用多少

目前市面上大部分的培训机构费用平均在一万五到两万之间,Java可能会稍微贵一点,如果算上平时的吃住可能还会花费一万左右。

相对昂贵的课程,我们在学校的选择上就要格外小心和注意了。市面上培训机构能够达到数十家甚至上百家,网络上的评论也参差不齐,很难判断消息的准确性和真实性就显得尤为重要,如何找到靠谱的培训机构是我们所关心的一大问题。

建议在选择学校时要多多实地考察,了解信息,综合得出结论,网上的推荐只能作为参考,靠自己调查才能获得真实信息。建议可以从以下几个方面考虑:

建议到学校里直接参与课堂随堂听课,了解学校的真实授课环境,教学质量,熟悉老师的教学方法。随机调查校内学员,考察学校的真实口碑,考证学校就业数据真实性。网上查找相关资料,搜寻学校负面消息。

找到靠谱的学校真的很重要,谁也不愿意自己的钱“打水漂”。所以在做这方面工作时,还请更加仔细,严格对待。