H5页面有多个倒计时的解决办法

本文介绍如何使用Vue.js的Vue.set()方法实现实时更新的动态时间倒计时功能,通过计算从当前时间到指定时间的时间差,并将结果显示在页面上。每秒更新时间显示,适用于各种倒计时场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里用到了vue中的Vue.set(),实现数据动态响应。具体用法可以参考Vue.set()实现数据动态响应

<body>

		<div id="app" v-cloak>
			<div v-for="item in orders">{{item.time}}</div>
		</div>

	<script src="https://cdn.jsdelivr.net/npm/vue"></script>
	<script>
		var page = new Vue({
			el: "#app",
			data: {
			//这里的数据直接换成你接口获取的
				orders: [{"times":"2019-07-26 23:00:00"},{"times":"2019-07-27 12:22:14"},{"times":"2019-07-27 10:00:56"}]
			},
			created: function() {
				var self = this;
				//这里是在你接口调取成功后 调用time方法
				for(var i = 0; i< self.orders.length; i++){
					self.time(i);
				}
			},
			methods: {
				time: function(i) {
					var self = this;
					var nowDate = new Date();
					var seconds = parseInt((new Date(self.orders[i].times) - nowDate) / 1000);
					if (seconds <= 0) {
						Vue.set(self.orders[i], "time", "00:00:00"); //当时间差小于0
						return;
					}

					var hours = Math.floor(seconds / (60 * 60));
					if (hours < 10) hours = "0" + hours;

					seconds = seconds % (60 * 60);
					var mins = Math.floor(seconds / 60);
					if (mins < 10) mins = "0" + mins;

					seconds = seconds % 60;
					if (seconds < 10) seconds = "0" + seconds;
					Vue.set(self.orders[i], "time", hours + ":" + mins + ":" + seconds);
					//每一秒调用一次
					setInterval(function() {
						self.time(i);
					}, 1000);
				}
			}
		})
	</script>

</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值