用Ts写一个用input选择框选定时间,更据input时间进行,定时发送内容,精确到分钟的代码
时间: 2024-05-05 12:15:36 浏览: 10
以下是使用 TypeScript 写的根据输入时间定时发送内容的代码,精确到分钟:
```typescript
const input = document.querySelector('input');
const textarea = document.querySelector('textarea');
function sendMessage() {
const currentTime = new Date();
const inputTime = new Date(input.value);
if (currentTime.getTime() < inputTime.getTime()) {
setTimeout(() => {
textarea.value = '发送内容';
sendMessage();
}, inputTime.getTime() - currentTime.getTime());
}
}
input.addEventListener('input', () => {
// 每次输入时间时清除之前的定时器
clearTimeout(timerId);
// 如果输入的时间已经过时,则不作处理
const currentTime = new Date();
const inputTime = new Date(input.value);
if (currentTime.getTime() >= inputTime.getTime()) {
return;
}
// 否则根据输入的时间设置定时器
timerId = setTimeout(() => {
textarea.value = '发送内容';
sendMessage();
}, inputTime.getTime() - currentTime.getTime());
});
let timerId: number | null = null;
```
代码解释:
1. 获取输入框和文本框的 DOM 元素。
2. 定义 `sendMessage` 函数,用于发送内容。在函数中,首先获取当前时间和输入的时间,如果当前时间小于输入的时间,则设置定时器,在输入的时间到达时发送内容,并再次调用 `sendMessage` 函数,直到当前时间大于等于输入的时间。
3. 监听输入框的 `input` 事件,每次输入时间时清除之前的定时器(如果有),如果输入的时间已经过时,则不作处理,否则根据输入的时间设置定时器,在输入的时间到达时发送内容,并调用 `sendMessage` 函数。
4. 定义一个变量 `timerId` 用于存储定时器 ID,初始值为 `null`。
注意事项:
1. 输入框应该设置 `type="datetime-local"` 属性,以便用户选择日期和时间。
2. 由于定时器的精度受浏览器性能和系统负载等因素影响,可能会有一定的误差,但通常不会超过几毫秒。