html下拉框的选择js代码添加控件,原生js实现下拉框选择组件

本文详细介绍了如何使用JavaScript实现一个下拉框选择组件,包括点击显示下拉框、动态生成儿童年龄选择框、点击确认按钮显示结果等功能,并通过事件委托简化代码。还展示了代码实现及不同状态的组件显示效果。
摘要由CSDN通过智能技术生成

本文实例为大家分享了js实现下拉框选择组件的具体代码,供大家参考,具体内容如下

功能需求:

1、点击div后,div显示聚焦状态,同时显示下拉框内容;

2、选择儿童人数后,如果儿童人数大于0,在下方出现对应的儿童年龄选择框数量;

3、成人人数的选择范围是1-7,儿童人数的选择范围是0-4,儿童年龄的选择范围是<1、1-17;

4、点击确认按钮后,将选择好的成人人数和儿童人数显示在最上方的div内;

5、可以控制选择框是否可点击;

6、当显示一个ul列表时,点击另一个ul列表,将上一个ul列表隐藏;

7、点击隐藏框内除绑定事件元素外,将正在显示的ul列表隐藏;

8、点击页面中任意空白位置,将显示的下拉框内容整体隐藏;

下拉框不可操作时的显示状态:

2b33149a59b333e1985c74d9ae693700.png

下拉框可操作时:

ddaab9e20aeab5f9cedd939e683376de.png

选择儿童人数后,下方自动出现对应数量的儿童年龄选择框:

104a55ce4d7a62e69fa87da1ec9c16e9.png

点击确认按钮后,将结果显示在是上方的div内:

b34bed84c03da5b284ae78c79c6eee66.png

刚开始的想法是对select、ul下拉列表、btn按钮分别进行事件监听,此外还要有当点击下拉框内其它位置时,ul下拉列表隐藏、当点击body时整个下拉框内容隐藏。监听事件过多,而且事件冒泡也会影响事件的执行,导致某些事件会出现执行多次的情况。

儿童年龄的选择框是根据儿童的人数来生成的,有几个儿童,就有几个年龄选择框。这种情况下,年龄的选择框肯定是动态创建的,无法针对年龄的select进行事件监听,只能采用事件委托的形式,所以最后把对select、ul下拉列表、btn按钮的点击事件,还有当点击container内其它位置时,ul下拉列表隐藏。全部委托给了dropDownContainer元素。

下面附上代码

html结构代码:

select

import Main from './js/Main.js';

//参数为false时,选择框不可点击;为true时,选择框可使用

let main=new Main(true);

main.appendTo("body");

Main.js文件:

import Utils from './Utils.js';

export default class Main{

static styles=false;

listPrep;

constructor(state){

//state控制下拉框是否可点击

this.state=state;

this.elem=this.createE();

}

createE(){

if(this.elem) return this.elem;

let div=Utils.createE("div");

div.className="guestsNum";

div.innerHTML=`人数未定

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值