Синхронизация 2 диапазона входных данных HTML и числа

#javascript #html #input

#javascript #HTML #ввод

Вопрос:

Эй, я хочу синхронизировать 2 входа, поэтому, если кто-то изменит ползунок, тогда также следует изменить ввод номера и наоборот, я знаю, что есть другой ответ на вопрос, но у меня не получилось, потому что важно не менять имена классов или идентификаторы, синхронизировать только ввод номера со слайдером, но не наоборот, мой код:

 <div class="slidecontainer">
  <input type="range" min="0.25" max="5" value="1" step="0.25" class="slider" id="playbackSpeed">
  <input type="number" value="1" class="number" id="playbackSpeed" placeholder="1,0">
</div>
  

мой js

 document
  .querySelector(".slider")
  .addEventListener("input", updateValue);
document
  .getElementsByClassName("number")
  .addEventListener("input", updateValue);

function updateValue(e) {
  var sibling =
    e.target.previousElementSibling ||
    e.target.nextElementSibling;
  sibling.value = e.target.value;
}
  

Ответ №1:

Вы даже можете сократить все это до:

 const inputs=[...document.querySelectorAll("input")];
inputs.forEach((inp,i)=>inp.addEventListener("input",()=>
  inputs[1-i].value=inputs[i].value )
)  
 <div class="slidecontainer">
  <input type="range" min="0.25" max="5" value="1" step="0.25" class="slider" id="playbackSpeed">
  <input type="number" value="1" class="number" id="playbackSpeed" placeholder="1,0">
</div>  

Ответ №2:

 let range=document.querySelector("input[type=range]");
let number=document.querySelector('input[type=number]')
range.addEventListener("change",(e)=>{
  number.value=e.target.value;
})
number.addEventListener("change",(e)=>{
  range.value=e.target.value;
})
  

Для получения дополнительной информации:https://codepen.io/Gangster_sCode/pen/abNKJMm

Комментарии:

1. О, большое спасибо, это работает, есть ли возможность обновить его мгновенно, не только если вы нажмете enter или отпустите кнопку мыши?

2. Используйте событие «ввод» вместо «изменить», см. Мой пост …