JavaScript實(shí)現(xiàn)定時(shí)器循環(huán)展示數(shù)組
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)定時(shí)器循環(huán)展示數(shù)組的具體代碼,供大家參考,具體內(nèi)容如下
先看看效果圖
流程
使用數(shù)組的slice() 方法通過條件判斷截取原數(shù)組相應(yīng)內(nèi)容組成新數(shù)組
循環(huán)數(shù)組
let currentPage = 0 // arr:原數(shù)組 newLen:新數(shù)組需要的長(zhǎng)度 currentPage:現(xiàn)在的頁碼 // 方法一: function loopData(arr, newLen) { ? let len = arr.length; ? let result = len - currentPage; ? let newArr = []; ? if (result > 0 && result < newLen) { ? ? newArr = [ ? ? ? ...arr.slice(currentPage - result, len), ? ? ? ...arr.slice(0, newLen - result), ? ? ]; ? ? currentPage = newLen - result; ? } else if (result >= newLen) { ? ? newArr = arr.slice(currentPage, currentPage + newLen); ? ? currentPage += newLen; ? } else { ? ? currentPage = 0; ? ? newArr = arr.slice(currentPage, currentPage + newLen); ? } ? return newArr; } // 方法二: function loopData(arr, newLen) { ? let len = arr.length; ? let newArr = []; ? if (currentPage === len) {?? ?// 頁碼等于數(shù)組長(zhǎng)度時(shí),從0重新開始 ? ? currentPage = 0; ? } ? if (currentPage + newLen <= len) { ? ? newArr = [...arr.slice(currentPage, currentPage + newLen)]; ? ? currentPage++; ? } else if (currentPage + newLen > len && currentPage < len) { ? ? newArr = [ ? ? ? ...arr.slice(currentPage, len), ? ? ? ...arr.slice(0, newLen - len + currentPage), ? ? ]; ? ? currentPage++; ? } ? return newArr; }
簡(jiǎn)單案例
<template> ? <div class="container"> ? ? <el-button @click="changeStatus">{{ flag ? "暫停" : "開始" }}</el-button> ? ? {{ list }} ? </div> </template> <script> let currentPage = 0; export default { ? data() { ? ? return { ? ? ? arr: [1, 2, 3, 4, 5, 6, 7], ? ? ? list: [], ? ? ? timer: null, ? ? ? flag: true, ? ? }; ? }, ? mounted() { ? ? this.start() ? }, ? destroyed() { ? ? this.timer && clearInterval(this.timer); ? }, ? methods: { ? ? changeStatus() { ? ? ? if (this.flag) { ? ? ? ? this.timer && clearInterval(this.timer); ? ? ? } else { ? ? ? ? this.start(); ? ? ? } ? ? ? this.flag = !this.flag; ? ? }, ? ? start() { ? ? ? this.timer = setInterval(() => { ? ? ? ? this.list = this.loopData(this.arr, 4); ? ? ? }, 1000); ? ? }, ? ? loopData(arr, newLen) { ? ? ? let len = arr.length; ? ? ? let newArr = []; ? ? ? if (currentPage === len) { ? ? ? ? currentPage = 0; ? ? ? } ? ? ? if (currentPage + newLen <= len) { ? ? ? ? newArr = [...arr.slice(currentPage, currentPage + newLen)]; ? ? ? ? currentPage++; ? ? ? } else if (currentPage + newLen > len && currentPage < len) { ? ? ? ? newArr = [ ? ? ? ? ? ...arr.slice(currentPage, len), ? ? ? ? ? ...arr.slice(0, newLen - len + currentPage), ? ? ? ? ]; ? ? ? ? currentPage++; ? ? ? } ? ? ? return newArr; ? ? }, ? }, }; </script> <style lang="scss" scoped> .container { ? padding: 20px; } </style>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js動(dòng)態(tài)往表格的td中添加圖片并注冊(cè)事件
這篇文章主要介紹了使用js動(dòng)態(tài)往表格的td中添加圖片并注冊(cè)事件,需要的朋友可以參考下2014-06-06JS實(shí)現(xiàn)逐頁將PDF文件轉(zhuǎn)為圖片格式
這篇文章主要為大家分享了如何通過前端js將pdf文件轉(zhuǎn)為圖片格式,并且支持翻頁預(yù)覽、以及圖片打包下載,文中的示例代碼簡(jiǎn)潔易懂,需要的可以參考一下2023-05-05Javascript利用canvas繪制兩點(diǎn)間曲線和箭頭
這篇文章主要為大家詳細(xì)介紹了Javascript如何利用canvas實(shí)現(xiàn)在兩點(diǎn)間繪制曲線和矩形,并且在矩形中繪制文字,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10javascript鼠標(biāo)滑動(dòng)評(píng)分控件完整實(shí)例
這篇文章主要介紹了javascript鼠標(biāo)滑動(dòng)評(píng)分控件實(shí)現(xiàn)方法,以完整實(shí)例形式詳細(xì)分析了javascript操作鼠標(biāo)事件及頁面元素樣式實(shí)現(xiàn)評(píng)分效果的方法,需要的朋友可以參考下2015-05-05Javascript實(shí)現(xiàn)的類似Google的Div拖動(dòng)效果代碼
Javascript實(shí)現(xiàn)的類似Google的Div拖動(dòng)效果代碼,需要的朋友可以參考下。2011-08-08JavaScript獲取radio選中值的幾種常用方法小結(jié)
這篇文章主要介紹了JavaScript獲取radio選中值的幾種常用方法,結(jié)合實(shí)例形式總結(jié)分析了javascript獲取radio選中值的常見實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2023-06-06一個(gè)無限級(jí)XML綁定跨框架菜單(For IE)
一個(gè)無限級(jí)XML綁定跨框架菜單(For IE)...2007-01-01Javascript中call,apply,bind方法的詳解與總結(jié)
本文主要Javascript中call,apply,bind方法的進(jìn)行全面分析,并在文章結(jié)尾對(duì)call,apply,bind方法的聯(lián)系和區(qū)別做了總結(jié),具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12