Когда value меньше p, содержимое исчезает и появляется

При условии что value меншье p, должны исчезать input-ы но они исчезают и появляются.

document.querySelector(".r").oninput = function(){
    document.querySelector(".n").value = document.querySelector(".r").value

    let p = document.querySelectorAll(".p")

    for(let j=0;j<p.length;j++){
        if(document.querySelector(".n").value < p[j].value){
            p[j].style.display = "none"
        }
        else{
            p[j].style.display = "flex"
        }
    }
}
<input type="number" class = "n" value = "220000">
<input type="range" class = 'r' value = "220000" min = "0" max = "220000">
<input type="text" class = "p" value = "190000">
<input type="text" class = "p" value = "220000">
<input type="text" class = "p" value = "120000">
<input type="text" class = "p" value = "50000">


Ответы (1 шт):

Автор решения: entithat

Потому что изначально .value сравнивались как строки (нп. '12' < '103' дало бы false).

When comparing values of different types, JavaScript converts the values to numbers.

Поэтому нам надо одну (любую) из переменных перевести в число.

document.querySelector(".r").oninput = function() {
  document.querySelector(".n").value = document.querySelector(".r").value

  let p = document.querySelectorAll(".p")

  for (let j = 0; j < p.length; j++) {
    if (parseInt(document.querySelector(".n").value) < p[j].value) {
      p[j].style.display = "none"
    } else {
      p[j].style.display = "flex"
    }
  }
}
<input type="number" class="n" value="220000">
<input type="range" class='r' value="220000" min="0" max="220000">
<input type="text" class="p" value="190000">
<input type="text" class="p" value="220000">
<input type="text" class="p" value="120000">
<input type="text" class="p" value="50000">

→ Ссылка