【发布时间】:2020-11-18 10:52:22
【问题描述】:
我有以下 HTML:
var mySlider = document.getElementById("mySlider");
var stored = localStorage.getItem("myData");
if (stored == null)
mySlider.value = 5;
else
mySlider.value = stored;
mySlider.addEventListener("change", () => {
localStorage.setItem("myData", mySlider.value);
});
<form oninput="myNumber.value=mySlider.value">
<input type="range" id="mySlider" min="0" max="10" />
<output for="mySlider" id="myNumber">default</output>
</form>
从存储和范围滑块获取和设置数据的所有操作似乎都运行良好;滑块加载到我之前设置的任何值。但是输出myNumber 似乎只响应滑块的手动移动;它在初始化时显示其原始值“默认”而不是输入滑块的值,直到我真正开始移动滑块。
我知道我可以在设置滑块的值时继续设置输出的值,但这似乎违背了首先设置输出元素的目的。输出是否不应该在更改时显示输入的结果,无论该更改来自javascript还是用户交互?我如何让它表现得这样?
【问题讨论】:
-
您必须手动设置该值;双向数据绑定仅在 Angular 或 React 等框架中受支持。
oninput只能通过通过鼠标或键盘更改输入来触发。 -
酷,我没有意识到我们有办法将可运行代码直接放在我们的问题中。
标签: javascript html input output