js 多选框,(切换的是背景图片)

本文介绍了一种使用纯JavaScript实现的自定义多选框,通过改变背景图片位置来模拟多选框的状态变化,提供了创建、设置状态和事件监听等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多选框,(切换的是背景图片)

//------------多选框代码–开始--------------

 class CheckBox{
        _checked=false;
        // 构造函数,new的时候执行这个函数
        constructor(){
            this.elem=this.createCheck();
        }
        createCheck(){
            if(this.elem) return this.elem;
            let div=document.createElement("div");
            Object.assign(div.style,{
                width:"14px",
                height:"14px",
                backgroundImage:"url(./img/new_icon.png)",
                backgroundPositionX:"-238px",
                backgroundPositionY:"-37px",
                margin:"5px"
            });
            div.addEventListener("click",e=>{
                // 这里this因为使用了箭头函数,this就是箭头函数外的this指向,
                // this在这里是实例化的对象
                // this.checked=值调用了set checked()方法
                this.checked=!this.checked;
                var evt=new Event("change");
                evt.obj=this;
                evt.checked=this.checked;
                document.dispatchEvent(evt);
            });
            return div;
        }
     

        set checked(value){
            // 当新设置的值和以前的一样时,节省效率不再进入执行
            if(this._checked===value)return;
           this._checked=value;
            Object.assign(this.elem.style,{
                // value是一个布尔值
                backgroundPositionX:value ? "-128px" : "-238px",
                backgroundPositionY:value ? "-126px" : "-37px",
            });
        }
        get checked(){
            return this._checked;
        }
        // 将check这个div放在父容器中
        appendTo(parent){
            parent.appendChild(this.elem);
        }
    }


    for(var i=0;i<5;i++){
        let ck=new CheckBox();
        ck.appendTo(document.body);
    }

//------------多选框代码–结束--------------

效果:
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值