JavaScript實(shí)現(xiàn)定時器循環(huán)展示數(shù)組
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)定時器循環(huán)展示數(shù)組的具體代碼,供大家參考,具體內(nèi)容如下
先看看效果圖

流程
使用數(shù)組的slice() 方法通過條件判斷截取原數(shù)組相應(yīng)內(nèi)容組成新數(shù)組
循環(huán)數(shù)組
let currentPage = 0
// arr:原數(shù)組 newLen:新數(shù)組需要的長度 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ù)組長度時,從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;
}簡單案例
<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>以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript中關(guān)于&& 和 || 表達(dá)式的小技巧分享
我將會介紹和解析12個簡單但是強(qiáng)大的JavaScript技巧. 這些技巧所有的JavaScript程序員都可以馬上使用, 你不需要成為JavaScript高手才能理解這些.下面我們開始本系列的第一篇文章,介紹下強(qiáng)大的&& 和 || 表達(dá)式2015-04-04
通過實(shí)踐編寫優(yōu)雅的JavaScript代碼
這篇文章主要介紹了如何通過實(shí)踐編寫優(yōu)雅的JavaScript代碼。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,下面我們來學(xué)習(xí)一下吧2019-05-05
js實(shí)現(xiàn)網(wǎng)頁標(biāo)題欄閃爍提示效果實(shí)例分析
這篇文章主要介紹了js實(shí)現(xiàn)網(wǎng)頁標(biāo)題欄閃爍提示效果的方法,以實(shí)例形式分析了網(wǎng)上比較常見的實(shí)現(xiàn)方法,并對于原理進(jìn)行分析并加以改進(jìn),最后給出了一個具體的應(yīng)用實(shí)例供大家參考,需要的朋友可以參考下2014-11-11
js實(shí)現(xiàn)兩點(diǎn)之間畫線的方法
這篇文章主要介紹了js實(shí)現(xiàn)兩點(diǎn)之間畫線的方法,涉及javascript圖形繪制的相關(guān)技巧,需要的朋友可以參考下2015-05-05
JS控制網(wǎng)頁動態(tài)生成任意行列數(shù)表格的方法
這篇文章主要介紹了JS控制網(wǎng)頁動態(tài)生成任意行列數(shù)表格的方法,實(shí)例分析了javascript操作表格節(jié)點(diǎn)控制dom元素添加的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
JavaScript實(shí)現(xiàn)自動消除按鈕功能的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)自動消除按鈕功能的方法,涉及javascript針對頁面元素屬性操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08
IE下雙擊checkbox反應(yīng)延遲問題的解決方法
這篇文章主要介紹了IE下雙擊checkbox反應(yīng)延遲問題的解決方法,需要的朋友可以參考下2014-03-03
JavaScript+html5 canvas制作色彩斑斕的正方形效果
這篇文章主要介紹了JavaScript+html5 canvas制作色彩斑斕的正方形效果,實(shí)例分析了JavaScript結(jié)合html5 canvas實(shí)現(xiàn)圖形動態(tài)繪制的技巧,需要的朋友可以參考下2016-01-01

