gpt4 book ai didi

javascript - OnChange 事件计算延迟

转载 作者:行者123 更新时间:2023-11-28 17:45:54 26 4
gpt4 key购买 nike

我正在尝试计算两个小数之间的差异。问题是它需要大约 2-3 sencods,这是一个问题,因为输入是时间,并且用户可以非常快地触发事件,并且它似乎以某种方式崩溃。这可能是由于小数点不四舍五入造成的吗?昏迷后我只需要 2 位数字。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Testing</title>
</head>
<body>

<input type="date" name="" id="">
<input type="time" step="300" name="" id="startTime" onkeydown="return false" />
<input type="time" step="300" name="" id="endTime" onkeydown="return false" />
<input type="text" id="totalHours">
</body>


<script>

document.querySelector("#startTime").onchange = function (e) {
}

document.querySelector("#endTime").onchange = function (e) {
timeDiff();
}

function timeDiff() {
var start = document.querySelector("#startTime").value;
var end = document.querySelector("#endTime").value;


var startSplit = start.split(":");
var startHsToMinutes = startSplit[0] * 60;
var startTotalMinutes = parseInt(startSplit[1]) + startHsToMinutes;

var endSplit = end.split(":");
var endHsToMinutes = (endSplit[0] * 60);
var endTotalMinutes = parseInt(endSplit[1]) + endHsToMinutes;

var totalHours = endTotalMinutes - startTotalMinutes;
document.querySelector("#totalHours").value = totalHours / 60;

}
</script>
</html>

最佳答案

使用 input 事件而不是 change事件:

document.querySelector("#endTime").oninput = function (e) {
timeDiff();
}

关于 change 的 MDN 文档事件解释了差异:

The change event is fired for <input>, <select>, and <textarea> elements when a change to the element's value is committed by the user. Unlike the input event, the change event is not necessarily fired for each change to an element's value.

关键字已提交。提交值的时刻可能取决于实现。对于标准文本input元素,当元素失去焦点时会发生这种情况。但在这种特殊情况下( time 类型 input )Chrome 将触发 change使用向上/向下箭头后发生事件,但时间可能会有所不同。有时几乎是立即的,有时会有延迟。

input事件更适合跟踪每一个更改,独立于用户如何进行更改(通过键盘、上下文菜单、拖放、集成在小部件内的按钮...),并且它会立即触发。

关于javascript - OnChange 事件计算延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46727156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com