文本输入在第一次尝试时不会更改滑块值
Text input does not change slider value on first attempt
我正在制作一个密码生成器,其中包含绑定在一起的文本输入和滑块值,但是当我第一次输入值时,它不会更新。当我再次尝试时,它会起作用,并且随后会起作用。滑块值始终更新。我不知道使它像这样执行的代码有什么问题,对 JS 来说仍然很新。
//html
<div class="slider">
<input type="text" id="slider-input" value="" onchange="setSlider(this)">
<input type="range" min="1" max="64" value="1" id="slider" oninput="myFunction(this)">
</div>
//JS
const sliderInput = document.getElementById("slider-input");
const slider = document.getElementById("slider");
let passLength = "";
function myFunction() {
slider.oninput = function() {
sliderInput.value = this.value;
passLength = this.value;
}
}
function setSlider() {
sliderInput.addEventListener("change", function() {
slider.value = this.value;
passLength = this.value;
})
}
看看 setSlider
函数。在第一次调用时,您将添加事件侦听器。因此,只有在初始调用之后我们才能看到预期的行为。
无需在每次更改时调用 addEventListener
,您可以将其全部删除:
function setSlider({value}) {
slider.value = value;
passLength = value;
}
我正在制作一个密码生成器,其中包含绑定在一起的文本输入和滑块值,但是当我第一次输入值时,它不会更新。当我再次尝试时,它会起作用,并且随后会起作用。滑块值始终更新。我不知道使它像这样执行的代码有什么问题,对 JS 来说仍然很新。
//html
<div class="slider">
<input type="text" id="slider-input" value="" onchange="setSlider(this)">
<input type="range" min="1" max="64" value="1" id="slider" oninput="myFunction(this)">
</div>
//JS
const sliderInput = document.getElementById("slider-input");
const slider = document.getElementById("slider");
let passLength = "";
function myFunction() {
slider.oninput = function() {
sliderInput.value = this.value;
passLength = this.value;
}
}
function setSlider() {
sliderInput.addEventListener("change", function() {
slider.value = this.value;
passLength = this.value;
})
}
看看 setSlider
函数。在第一次调用时,您将添加事件侦听器。因此,只有在初始调用之后我们才能看到预期的行为。
无需在每次更改时调用 addEventListener
,您可以将其全部删除:
function setSlider({value}) {
slider.value = value;
passLength = value;
}