jsp + vue + js 实现多条数据进行计时
时间: 2023-12-20 07:07:49 浏览: 78
可以使用 JSP 结合 Vue 和 JavaScript 实现多条数据的计时,具体步骤如下:
1. 在 JSP 页面中引入 Vue 和 JavaScript 文件。
```html
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="timer.js"></script>
```
2. 定义需要计时的数据,并将其存储在 Vue 实例中。
```javascript
var timer = new Vue({
el: '#timer',
data: {
data: [
{name: '数据1', startTime: new Date()},
{name: '数据2', startTime: new Date()},
{name: '数据3', startTime: new Date()},
]
}
});
```
3. 在页面中使用 Vue 的 v-for 指令遍历数据,并将其显示在页面中。
```html
<div id="timer">
<div v-for="(item, index) in data" :key="index">
{{ item.name }}:{{ getTimeDiff(item.startTime) }} 秒
</div>
</div>
```
4. 在 JavaScript 文件中定义一个函数,用来计算时间差,并将其返回。
```javascript
function getTimeDiff(startTime) {
let diff = new Date() - new Date(startTime);
return Math.floor(diff / 1000);
}
```
5. 使用 setInterval() 函数设置一个计时器,每隔一定时间执行一次函数,这个函数用来更新页面中的计时数据。
```javascript
setInterval(function() {
timer.data.forEach(function(item) {
item.timeDiff = getTimeDiff(item.startTime);
});
}, 1000);
```
完整示例代码如下:
JSP 页面:
```html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>多条数据计时</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="timer.js"></script>
</head>
<body>
<div id="timer">
<div v-for="(item, index) in data" :key="index">
{{ item.name }}:{{ getTimeDiff(item.startTime) }} 秒
</div>
</div>
</body>
</html>
```
JavaScript 文件(timer.js):
```javascript
var timer = new Vue({
el: '#timer',
data: {
data: [
{name: '数据1', startTime: new Date()},
{name: '数据2', startTime: new Date()},
{name: '数据3', startTime: new Date()},
]
}
});
function getTimeDiff(startTime) {
let diff = new Date() - new Date(startTime);
return Math.floor(diff / 1000);
}
setInterval(function() {
timer.data.forEach(function(item) {
item.timeDiff = getTimeDiff(item.startTime);
});
}, 1000);
```
注意,在 JSP 页面中需要将 `#timer` 设置为 Vue 实例的根元素。
另外,如果需要在计时器函数中更新页面中的数据,需要使用 Vue.set() 方法,以便 Vue 能够正确地检测到数据的变化。例如:
```javascript
setInterval(function() {
timer.data.forEach(function(item) {
Vue.set(item, 'timeDiff', getTimeDiff(item.startTime));
});
}, 1000);
```
阅读全文