• 【react】聊天记录搜索 关键字高亮 自动定位滚动到第一条


    关键字高亮:

     父组件
     //设置高亮
        handleToChatLight = (conData, msgData, inputVlaue) => {
            //conData 已检索到的记录ID msgData 所有记录 inputVlaue检索内容
            let x = document.querySelectorAll('.light-span');
            // console.log("回车----", x)
            for (var i = 0; i < x.length; i++) {
                // x[i].style.background = "#5CADFF";
                x[i].className = "defalut-span"
            }
            //聊天记录包含搜索内容 进行高亮并滚动到第一条
            if (conData && conData.length > 0) {
                msgData && msgData.map((item, i) => {
                    conData && conData.map((items, index) => {
                        if (item.msgID == items && item.msgType == 1) {
                            // console.log("item---",item)
                            this.onRefMsg.handleSetHighlight(item.msgID, inputVlaue)
                        }
                    })
                })
            }
        }
     
    子组件

    //设置高亮 handleSetHighlight = (id, searchValue, clear) => { var content = document.getElementById(id); var contents = content.innerHTML; // console.log("contents-----",content.innerHTML) var value = searchValue var values = contents.split(value); // console.log("contents", contents, "values----", values, "content.innerHTML", content.innerHTML) content.innerHTML = values.join(`<span id=${id} class="light-span">${value}</span>`); let x = document.querySelectorAll('.light-span'); // console.log("xx---高亮",x) for (var i = 0; i < x.length; i++) { this.scrollTo(x[0].id) // x[i].style.background = "green" } }

      

    思路:锚点定位

    scrollTo = (acName) => {
            if (acName) {
                // 找到锚点
                let acElement = document.getElementById(acName);
                // 如果对应id的锚点存在,就跳转到锚点
                if (acElement) { acElement.scrollIntoView({ block: 'start', behavior: 'smooth' }); }
            }
        }
  • 相关阅读:
    Win 11 添加并使用 DOH
    Dockercompose 一键搭建 Discourse 论坛
    JSON.parse容错问题
    yum install vim y失败
    常见的问题系列【解决tomcat端口一直被占用的问题,更换端口也不行】
    dockermavenplugin 与 dockerfilemavenplugin 对springboot自动打包docker镜像并推送harbor的区别
    drawio私有存储方法
    WxyCMS模板标签大全
    c语言程序(上课用)
    c语言文件处理 (上课用)
  • 原文地址:https://www.cnblogs.com/522040-m/p/13791048.html
Copyright © 2020-2023  润新知