同一页面创建多个定时器

在一个网页中同时创建多个定时器实现不同任务的倒计时功能,定时器倒计时时间到达之后需要将定时器清除,否则就会新创建的定时器就会受到干扰,代码如下,

<style>
.card-container {
    width: 100px;
    height: 150px;
    background-color: antiquewhite;
    box-shadow: 1px 2px 5px #b1b1b1;
    margin-right: 20px;
}
.tanchuang {
    width: 50px;
    height: 80px;
    background-color: aqua;
}
</style>


<ul style="display: flex;list-style: none;">
    <li id="card0" class="card-container"></li>
    <li id="card1" class="card-container"></li>
    <li id="card2" class="card-container"></li>
</ul>
// 判断是否存在同名弹窗并删除
function ifSameTanchaung(index) {
    if (tanchuangArr.length > 0) {
        for (let j = 0; j < tanchuangArr.length; j++) {
            if (tanchuangArr[j] == `tanchuang${index}`) {
                deleteSameTanchaung(tanchuangArr[j], `tanchuang${j}`, j)
            }
        }
    }
}

// 直接删除同名弹窗
function deleteSameTanchaung(timer, idName, index) {
    clearInterval(timer)
    let tanchuangItem = document.getElementById(idName)
    tanchuangItem.parentNode.removeChild(tanchuangItem)
        // deleteTimer(index)
}

let timerArr = []
// 倒计时4s定时器
function timeCoutDown(timer, idName, index, fn) {
    let Time = 4
    timer = setInterval(() => {
        if (Time <= 0) {
            clearInterval(timer)
            let tanchuangItem = document.getElementById(idName)
            tanchuangItem.parentNode.removeChild(tanchuangItem)
                deleteTimer(index)
            }
            else {
                fn(Time--)
            }
     }, 1000)
         timerArr.push(timer)
}

// 删除数组中的某个弹窗和对应的定时器
function deleteTimer(index) {
    tanchuangArr.splice(index, 1)
    timerArr.splice(index, 1)
}


let tanchuangArr = []
// 触发弹窗函数(websocket)
function tanchuang() {
    let i = 1
    ifSameTanchaung(i)
    tanchuangArr.push(`tanchuang${i}`)
    let cardItem = document.getElementById(`card${i}`)
    let tanchuang = document.createElement('div')
    tanchuang.id = `tanchuang${i}`
    tanchuang.classList.add('tanchuang')
    cardItem.appendChild(tanchuang)
    timeCoutDown(tanchuangArr[i], `tanchuang${i}`, i)
}

tanchuang()

setTimeout(() => {
    tanchuang()
}, 3000);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uniapp小程序中,如果需要将获奖名单以多个向上滚动的方式展示,可以采用以下的实现方式。 首先,在页面的data中定义一个数组,用来存储获奖名单的数据,例如:awardList:[]. 然后,在页面的生命周期函数onLoad中,可以从后台或其他来源获取获奖名单的数据,并将其存储到awardList数组中。 接下来,在页面的wxml中使用scroll-view组件,并设置其属性为vertical(垂直方向滚动),同时设置scroll-y为true以允许垂直滚动。例如: <scroll-view class="scroll-view" scroll-y="true" enable-back-to-top="true"> <view wx:for="{{awardList}}"> <!-- 在此添加展示获奖名单的代码 --> </view> </scroll-view> 在scroll-view中的view标签中使用wx:for遍历awardList数组,将获奖名单逐个展示出来。你可以自定义view标签内部的样式和布局,以便更好地展示获奖名单的信息。 如果希望获奖名单能够向上滚动,还可以设置scroll-view组件的属性为:scroll-top="{{scrollTop}}",其中scrollTop是一个页面data中的变量,用来控制scroll-view组件的滚动位置。 在页面的生命周期函数onShow中,使用定时器或其他方式来更新scrollTop的值,从而实现获奖名单的向上滚动效果。例如: onShow: function() { setInterval(() => { this.setData({ scrollTop: this.data.scrollTop + 1 }) }, 1000) } 这样,获奖名单就可以以多个向上滚动的方式展示在uniapp小程序中了。可以根据具体需求,调整滚动速度和展示效果等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值