同一页面有多个滚动的table表格,鼠标滑入表格暂停不生效

解决思路:通过给每个表格传入一个ID,通过ID去调用定时器。
实现具体步骤如下:
home.vue
<div class="content-box">
    <ScrollTable :id=“scrollTable1" :data="abnormal.data"></ScrollTable>
</div>
<div class="content-box">
    <ScrollTable :id=“scrollTable2" :data="warnings.data"></ScrollTable>
</div>
data () {
    return {
        scrollTable1: 'scrollTable1',
        scrollTable2: 'scrollTable2'
    }
}
ScrollTable.vue(组件)
<template>
  <i-table ref='table' :id="id" :data="data"></i-table>
</template>
<script>
export default {
  props: {
    id: {
      type: String,
      default () {
        return null
      }
    },
    data: {
      type: Array,
      default: () => {
        return []
      }
    }
  },
  data () {
    return {
      timer: null
    }
  },
  mounted () {
    this.scrollTable()
  },
  methods: {
    // 滚动的方法
    scrollTable () {
      let _this = this
      // 通过ID和类名去锁定是哪个table滑动,注意table是一个数组,当鼠标进入或者移出时取数组的第0项
      let table = document.getElementById(this.id).getElementsByClassName('ivu-table-body')
      table.scrollTop = 0
      table.innerHTML += table.innerHTML
      setTimeout(play(), 500)
      // 鼠标进入时使其暂停,即取消定时器
      table[0].onmouseover = function () {
        clearInterval(_this.timer)
      }
      // 鼠标移出时使其继续,即取再次调用滚动的方法
      table[0].onmouseout = function () {
        play()
      }
      // 滚动的方法
      function play () {
        _this.timer = setInterval(function () {
          table[0].scrollTop++
          if (table[0].scrollTop >= (table[0].scrollHeight - table[0].offsetHeight - 1)) {
            table[0].scrollTop = 0
          }
        }, 100)
      }
    }
  },
  destroyed () {
    clearInterval(this.timer)
  }
}
</script>


全部评论

相关推荐

迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
刘湘_passion:太强了牛肉哥有被激励到
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务