el-table实现搜索高亮展示并滚动到元素位置

这篇具有很好参考价值的文章主要介绍了el-table实现搜索高亮展示并滚动到元素位置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果展示:

el-table实现搜索高亮展示并滚动到元素位置,vue.js,javascript,elementui,前端文章来源地址https://www.toymoban.com/news/detail-815436.html

代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <style>
    *{padding: 0;margin: 0;}
    #app{padding: 30px;}
    .searchBox{
      width: 100%;
      display: flex;
      align-items: center;
      margin: 20px 0;
      position: fixed;
      z-index: 9;
    }
  </style>
</head>
<body>
  <div id="app">
    <div class="searchBox">
      <el-input v-model="searchText" style="width:200px;"  placeholder="请输入关键字"  prefix-icon="el-icon-search" clearable @clear="search" size="small" @keyup.enter.native="search" > </el-input>
      <el-button type="primary" size="small" icon="el-icon-search" @click="search" ></el-button>
    </div>
    

    <el-table :data="tableData" style="width: 100%;margin-top: 70px;" border>
      <el-table-column label="序号" width="50px" align="center"> <template slot-scope="scope"> {{scope.$index+1}} </template> </el-table-column>
      <el-table-column prop="date" label="日期"  width="180"> </el-table-column>
      <el-table-column prop="name" label="姓名" width="180">
        <template slot-scope="scope">
          <div :dataText="scope.row.name" class="keywordName">{{scope.row.name}}</div>
        </template>
      </el-table-column>
      <el-table-column prop="address" label="地址"> </el-table-column>
    </el-table>
  </div>
  <!-- 记得引入vue2 -->
  <script src="./vue.min.js"></script>
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <script>
    new Vue({
      el:'#app',
      data(){
        return{
          tableData: [
            {date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'},
            {date: '2016-05-04',name: '王小虎', address: '上海市普陀区金沙江路 1517 弄'}, 
            {date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1519 弄'}, 
            {date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '张三',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '李四',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '赵六',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '赵六',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '王五',address: '上海市普陀区金沙江路 1516 弄'},
            {date: '2016-05-03',name: '赵六',address: '上海市普陀区金沙江路 1516 弄'},
          ],
          //
          searchText: '',
         
        }
      },
      mounted() {
        // scroll代表滚动条距离页面顶部距离
        // window.addEventListener('scroll', this.dataScroll)
      },
      methods:{
        search(){
          let main =  document.querySelectorAll('.keywordName')
          var num = 0
          main.forEach(item => {
            //重置上次搜索的背景色
            item.innerHTML = item.getAttribute('dataText')
            //便利找到匹配项,加背景颜色
            if(item.innerHTML.indexOf(this.searchText) != -1 && num === 0){
              num++
              const reg = new RegExp(this.searchText, 'g')
              let dom = item.innerHTML.replace(reg, '<span class="searchTexts" style="background-color: yellow">' + this.searchText + '</span>')
              item.innerHTML = dom
            }
          })
          // 替换配置
          this.getSearchList()
        },
        getSearchList() {
          var dom = document.querySelectorAll('.searchTexts')
          //滚动到屏幕位置
          if(dom.length){
            dom[0].scrollIntoView({
              block: 'start',
              behavior: 'smooth'
            })
          }
          
        },
        dataScroll() {
          this.scroll = document.documentElement.scrollTop || document.body.scrollTop
        },
      }
    })
  </script>
</body>
</html>

到了这里,关于el-table实现搜索高亮展示并滚动到元素位置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何给el-table添加选中高亮

    首先给el-table添加属性highlight-current-row,当点击当前行的时候会有个默认的高亮 然后可以根据设计图修改选中行的高亮颜色 如果需要做选中的逻辑处理,那么可以给el-table绑定current-change事件

    2024年02月13日
    浏览(50)
  • element-ui的table实现滚动加载,涵el-table组件封装一份

    重点就是 a d d R o l l L i s t e n e r addRollListener a d d R o l l L i s t e n e r 函数,想快点弄上去看效果的直接弄这个函数吧 如果不在mounted中则一定要this.$nextTick(() = this.addRollListener()) 示例代码 如果你把上面的看过了;只需要在 a d d R o l l L i s t e n e r addRollListener a d d R o l l L i s t e

    2023年04月08日
    浏览(61)
  • elementUI el-table实现鼠标悬浮某一行,在鼠标右侧展示提示信息

    背景 el-table组件中,可以通过勾选某条数据来创建单据,但是有些数据没有权限使用,就需要禁用掉勾选的功能,然后当鼠标悬浮在这一行的时候,展示类似于toolTip的提示框。 除了当鼠标悬浮在某一行,展示类似于toolTip的提示框这一条el-table是没有提供配置项的,其他的都

    2024年02月08日
    浏览(57)
  • 一个比官网更好的el-table 实现跨行展示的例子

    el-table 实现跨行展示的例子,好吧,这个问题好像挺容易的,官网文档就有例子,用的是span-method,不过官网给的例子其实实现起来有时候并不容易,而且也不是很灵活,这里给出一种比官网更好的实现方式。以跨行为例,跨列其实是类似的。 效果如图 1、使用的还是官方的

    2024年01月18日
    浏览(48)
  • el-table 设置行背景颜色 鼠标移入高亮问题处理

    后端返回表格数据,有特定行数需要用颜色标识。类似于以下需求: 方式 区别 :row-class-name=“tableRowClassName” 已返回类名的形式设置样式,代码整洁,但是会鼠标高亮,导致背景颜色失效 :cell-style=“cellStyle” 以返回样式的形式设置,无鼠标高亮问题 2.1 表格代码 2.2 :row-cla

    2024年02月15日
    浏览(52)
  • [element-ui] el-table点击高亮当前行

    1、highlight-current-row 2、:row-class-name=“tableRowClassName”,需要借助@row-click=\\\"handleRowClick\\\"获取当前点击行的下标 参考: elementUI中table点击高亮当前行的两种方式

    2024年03月21日
    浏览(47)
  • vue中数据滚动显示 实现Element-UI中el-table内数据的懒加载

    工作中我们经常会用到element-ui组件库中的le-table组件来展示数据,但当table的数据源数量过大的时候统一展示可能会出现页面卡顿,且会影响用户体验,为此我们可以尝试对el-table中的数据做懒加载的效果展示: 1. 挂在阶段监听el-table的scroll滚动事件 2. 当table表格滚动条的位置

    2023年04月08日
    浏览(55)
  • el-table树形结构 当前行为子级时无高亮效果(已解决)

    需求:el-table行点击时需要高亮当前行。 问题:当el-table为树形结构时,点击子级却无高亮效果。 如图所示的树形表格: 点击父级有高亮效果,点击子级高亮效果消失。 通过查看html源码发现高亮样式主要通过    current-row    类去定位。当我们选中子级时,子级的tr上没有该

    2024年02月07日
    浏览(33)
  • el-table滚动加载、懒加载(自定义指令)

    我们在实际工作中会遇到这样的问题: 应客户要求,某一个列表不允许分页。但是不分页的话,如果遇到大量的数据加载,不但后端响应速度变慢,前端的渲染效率也会降低,页面出现明显的卡顿。 那如何解决这个问题呢   我们可以用模拟分页,当滚动条滚动到底部时再次

    2024年02月10日
    浏览(36)
  • element plus el-table 添加滚动监听

    项目上使用 el-table 加载1000 条数据,同时有三个列的数据需要实时更新,而数据更新时会导致页面不响应,表现为拖动过程中突然卡顿。为了解决卡顿问题提出了两个解决办法:一个是滚动时清除定时器,不再刷新表格,滚动结束后恢复定时器;另一个是只刷新视口数据,更

    2024年02月06日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包