制作一个字符串的跑马灯效果
(1)实例代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>字符串的跑马灯效果</title> <script src="../lib/vue.js"></script> </head> <body> <div class="app"> <h1 v-text='msg'></h1> <input type="button" value="走你" @click="go"> <input type="button" value="停" @click="stop"> </div> <script> var vm = new Vue({ el:'.app', data:{ msg:'习得前端妙,抱得美人归!', timer:null }, methods:{ go() { // clearInterval(timer); if(this.timer != null){ return; } //使用if判断定时器状态,解决重复开启定时器的bug。 this.timer=setInterval(() => { //箭头函数解决this指向问题,箭头函数内部的this相对于外部this的指向。 // console.log(this.msg)需要访问data中数据时,一定要使用this,比如this.msg var firstStr=this.msg.substring(0,1); var lastStr=this.msg.substring(1);//截取函数的使用 this.msg=lastStr+firstStr; },400) }, stop(){ clearInterval(this.timer); this.timer=null; } } }) </script> </body> </html>
(2)摘要
实现案例的基本思路是利用substring截取字符串再进行拼接,然后使用定时器来达到动态的效果。
箭头函数可以解决this的指向问题,箭头函数内部的this相对于外部this的指向。
需要访问data中数据时,一定要使用this访问,比如this.msg this.timer。
注意substring()函数的使用,substring(0,1)表示从0开始截取1位字符,substring(1)表示从1开始截取到最后。
案例中会出现重复开启定时器的bug,通过定义timer=null,然后判断其状态来解决bug,最后在清除定时器后需要重新赋值timer=null。