账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue中的定时器不起作用 这是为啥 我想移入让他停止 移除就可以显示 但是定时器好像清除不了
    • 纯天然无毒无添加防腐剂2017-12-07 00:00
    27
    0
    <template>
      <div id="app">
                <vheader></vheader>
                <el-container class="content">
                    <el-row>
                      <el-col :span="21" ><div id="box" ref="box" class="grid-content bg-purple" v-on:mouseenter.native="enter" v-on:mouseleave.native="leave" >
                        <div class="newsitem" v-for="(item,i) in listImg" :key="this" >
                            <img :src="item.imgSrc" :alt="item.imgSrc" width="100%" height="100%">
                        </div>
                      </div>
                      </el-col>
                      <el-col :span="3"><div class="grid-content bg-purple-light">厂商推荐</div></el-col>
                    </el-row>
                </el-container>
      </div>
    </template>
    <script>
    import vheader from '@/components/vheader/vheader'
    export default {
       components:{
        vheader
       },
       created(){
           let box = this.$refs.box;
           this.initswiper();
       },
       methods:{
           initswiper(){
               clearInterval(this.timer)
               this.timer=setInterval(()=>{
                    var l=box.offsetLeft+10;
                    if(l>=0){
                        l=-box.clientWidth/2;
                    }
                    box.style.left=l+"px";
                },500);
               },
         enter(){
             console.log(1111)
             clearInterval(this.timer);
         },
         leave(){
             console.log(222)
             this.initswiper()
         }
       },
       data(){
           return {
               timer:null,
               listImg:[
                    {
                        imgSrc:'src/components/swiper/1.jpg',
                        text:"1111111"
                    },
                    {
                        imgSrc:'src/components/swiper/2.jpg',
                        text:"22222"
    
                    },
                    {
                        
                        imgSrc:'src/components/swiper/3.jpg',text:"3333333"
                    },
                    {
                        
                        imgSrc:'src/components/swiper/4.jpg',text:"44444444444"
                    },
                    {
                        imgSrc:'src/components/swiper/1.jpg',
                        text:"1111111"
                    },
                    {
                        imgSrc:'src/components/swiper/2.jpg',
                        text:"22222"
    
                    },
                    {
                        
                        imgSrc:'src/components/swiper/3.jpg',text:"3333333"
                    },
                    {
                        
                        imgSrc:'src/components/swiper/4.jpg',text:"44444444444"
                    }
                    ]
           }
       }
    }
    </script>
    <style scoped>
        .content{
            height: 160px;
        }
        .el-row{
            width: 100%;
            height: 100%;
        }
        .el-col{
            height: 100%;
            padding: 10px;
            background: #666;
            position: relative;
            overflow: hidden;
        }
        .grid-content{
            width: 200%;
            position: absolute;
            height: 140px;
            left: 10px;
            top: 10px;
            overflow: hidden;
        }
        .newsitem{
            width: 12%!important;
            margin-right: 10px;
            float: left;
            overflow: hidden;
            margin-bottom: 10px;
            cursor: pointer;
        }
    </style>
    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 舊言虐心 普通会员 1楼

      定时器在Vue中并不是被清除的,它只是被暂停。你可以通过以下步骤来实现你的需求:

      1. 首先,你需要在methods中定义一个定时器的方法,例如start,stop,pause和resume。

      javascript export default { methods: { start() { // 创建定时器 const timer = new Date().getTime() + 1000; this.$refs.yourComponent.setInterval(timer, 1000); }, stop() { // 清除定时器 this.$refs.yourComponent.clearInterval(timer); }, pause() { // 停止定时器 this.$refs.yourComponent.clearInterval(timer); }, resume() { // 重新启动定时器 this.$refs.yourComponent.setInterval(timer, 1000); } } };

      1. 然后,你需要在模板中使用定时器的方法,例如start,stop,pause和resume。

      ```html

      ```

      1. 最后,你需要在mounted钩子中检查定时器是否已经暂停,如果已经暂停,你需要重新开始定时器。

      javascript mounted() { this.$refs.yourComponent.$refs.yourComponent.clearInterval(this.timer); this.$refs.yourComponent.setInterval(this timer, 1000); }

      这样,你的定时器就会被暂停,当点击按钮时,它会重新开始,而不会被清除。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部