三栏穿梭单

纯html编写的三栏穿梭单
在这里插入图片描述
支持全选功能
类比于layUi Vue里的 两栏穿梭单

源码

三栏穿梭
左侧穿梭单
中部穿梭单
中部穿梭单

/*

  • 初始化
  • */
    KaTeX parse error: Expected '}', got 'EOF' at end of input: …heckbox" value={dataList[Number(i)].value} label=" d a t a L i s t [ N u m b e r ( i ) ] . l a b e l " n a m e = " l e f t " o n c l i c k = " c h o o s e B t n ( t h i s , l e f t , 0 ) " > < d i v c l a s s = " l a b e l " > {dataList[Number(i)].label}" name="left" οnclick="chooseBtn(this,'left',0)"> <div class="label"> {dataList[Number(i)].label}
    `
    }
    $(".left")[0].innerHTML+=html;
    document.getElementsByName(“left”).addEventListener(“click”, auditBtnStatus());
    });

/*

  • 全选按钮
  • */
    function chooseAll(name) {
    /判断当前全选按钮是否选择/
    let flag=document.getElementsByName(name+“All”)[0].checked
    /将所有子按钮至为同状态/
    let obj =document.getElementsByName(name);
    for(let k in obj){
    obj[k].checked=flag
    }
    auditBtnStatus(flag,name);
    }

/*

  • 移动按钮状态

  • */
    function auditBtnStatus() {
    debugger

    // let ele=$("."+name+"-move .btn")
    // ele[index].disabled=!flag
    // if(flag){
    // ele[index].className=ele[index].className.replace(“btn-disabled”,"")
    // ele[index].classList.add(“isActive”)
    // }else{
    // ele[index].className=ele[index].className.replace(“isActive”,"")
    // ele[index].classList.add(“btn-disabled”)
    // }
    }

/*

  • 移动按钮点击

  • 将before移动到after上

  • */
    function chooseMoveBtn(before,after) {

    /获取before上所有已经点击的按钮/
    let obj =document.getElementsByName(before);
    let html=’’
    let label=’’
    let baseHtml=’’
    obj.forEach((item)=>{
    label=getLabelFromInput(item.outerHTML)
    if(item.checked){
    html+=<div class="title"> <input type="checkbox" value=${item.value} label=${label} name=${after} onclick="chooseBtn(this,'${after}')"> <div class="label">${label}</div> </div>
    }else{
    baseHtml+=<div class="title">${item.outerHTML}<div class="label">${label}</div></div>
    }
    })
    $("."+after)[0].innerHTML+=html
    /删除 原始目录的html/
    ( " . " + b e f o r e ) [ 0 ] . i n n e r H T M L = ("."+before)[0].innerHTML= ("."+before)[0].firstElementChild.outerHTML+baseHtml

}

/*

  • 按钮单单选

  • */
    function chooseBtn(e,name){

    /获取所有按钮状态/
    let obj =document.getElementsByName(name);
    document.getElementsByName(name+“All”)[0].checked=true
    obj.forEach((item)=>{
    if(!item.checked){
    document.getElementsByName(name+“All”)[0].checked=false
    }else{
    //高亮移动框
    auditBtnStatus(true,name)
    }
    })
    }

/*

  • 获取input label值
  • text:labtl的html
  • */ function getLabelFromInput(text) { return text.split(“label=”)[1].split(""")[1] }