layui tabel筛选列 记忆功能

记录一下

参考https://www.cnblogs.com/zuochanzi/p/14721567.html
Mutation Observerhttps://blog.csdn.net/u012060033/article/details/89791267

代码:


		//筛选框记忆功能
        //1页面打开,先读本地缓存
        //2读入cols  设置hide true 或者false
        //3渲染table
        //4加入 筛选框选择框事件获取 并设置本地缓存
        
var cols=[[
            {type: 'checkbox'},
            {field: 'expenseId', hide: true, title: '报销id'},
            {field: 'applyPerson',hide: false,title: '申请人'},
            {align: 'center', toolbar: '#tableBar', title: '操作',minWidth:250}
        ]];
        intCols();
        function  intCols()
        {
            for (var i=0;i<cols[0].length;i++)
            {
                if(cols[0][i].field!=undefined)
                {
                    let localfield='test'+cols[0][i].field;//key
                    let hidevalue =window.localStorage.getItem(localfield);//获取本地缓存
                    console.log(hidevalue);
                    if(hidevalue==='false')
                    {
                        cols[0][i].hide=false;//显示
                    }else if(hidevalue==='true')
                    {
                        cols[0][i].hide=true;//不显示 
                    }
                }
            }
        }
// 选择需要观察变动的节点
    const targetNode =document.getElementsByClassName('layui-table-tool');//document.getElementById('some-
    const targetNode1 =document.getElementsByClassName('layui-table-tool-self')[0];//document.getElementById('some-id');
    // 观察器的配置(需要观察什么变动)
    /*
    * childList:子节点的变动。
    * attributes:属性的变动。
    * characterData:节点内容或节点文本的变动。
    * subtree:所有后代节点的变动。
    * */
    const config = { attributes: true, childList: true, subtree: true,characterData:true };

    // 当观察到变动时执行的回调函数
    const callback = function(mutationsList, observer) {
       /* console.log('mutationsList'+mutationsList);
        console.log('observer'+observer);*/
        // Use traditional 'for loops' for IE 11
        for(let mutation of mutationsList) {
            if (mutation.type === 'childList') {
                 console.log('A child node has been added or removed');
            }
            else if (mutation.type === 'attributes') {
                //console.log(mutation.target.innerText);
                //先根据innertext 列名称 对cols 进行field 查询,查到field 可以找到本地缓存的字段,约定,本地缓存的命名规则为表名字母缩写_加field名组成,防止冲突
                var field="";
                for (var i=0;i<cols[0].length;i++)
                {
                    if(cols[0][i].title===mutation.target.innerText)  //标题相同 则取field
                    {
                        field=cols[0][i].field;
                        break;
                    }
                }
                if(field!=="")
                {
                    // 组装缓存key
                    let localkey='test'+field;
                    //判断value值
                    if(mutation.target.classList[2]!=undefined) //说明2: "layui-form-checked"  复选框是已选择的,说明此列是在表中显示的
                    {
                        window.localStorage.setItem(localkey,false);
                    }else  //没被选择,说明此列不在table中显示
                    {
                        window.localStorage.setItem(localkey,true);
                    }
                }
            }else if (mutation.type === 'subtree'){
                console.log('subtree');
            }else if (mutation.type === 'characterData'){
                console.log('characterData');
            }
        }
    };

// 创建一个观察器实例并传入回调函数
    const observer = new MutationObserver(callback);
// 以上述配置开始观察目标节点
    observer.observe(targetNode1, config);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值