![](/img/trans.png)
[英]How to use jQuery to compare each array number? and if less than input range number div tag will hide
[英]How to hide elements of li with values less than input number
我有一個將用戶輸入的內容作為數字的表格。 以下是帶數字的無序列表。
<input type="text" id="myInput" onkeyup="myFunction()" autocomplete="off">
<ul id="myUL">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script>
function myFunction(){
let input = parseInt(document.querySelector('myInput').value);
let li = document.getElementsByTagName('li');
for (i = 0; i < li.length; i++) {
let number = parseInt(li[i].value);
if (number < input) {
li[i].style.display = 'none';
} else {
li[i].style.display = '';
}
}
}
</script>
如果這些數字中的任何一個小於輸入,則元素應動態隱藏。 他們沒有躲藏。
[解決了]
function myFunction(){
let input = parseInt(document.querySelector('#myInput').value);
let li = document.getElementsByTagName('li');
for (let i = 0; i < li.length; i++) {
let number = parseInt(li[i].innerHTML);
if (number < input) {
li[i].style.display = 'none';
} else {
li[i].style.display = '';
}
}
}
您應該使用innerHTML
或innerText
。 還要使用document.querySelector('#myInput')
。 並使用Array.from()
將li轉換為Array
並使用Array.prototype.forEach()
循環看起來更好
function myFunction(){ let input = parseInt(document.querySelector('#myInput').value); let li = Array.from(document.getElementsByTagName('li')); li.forEach(item => { let number = parseInt(item.innerHTML); if (number < input) { item.style.display = 'none'; } else { item.style.display = ''; } }) }
<input type="text" id="myInput" onkeyup="myFunction()" autocomplete="off"> <ul id="myUL"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul>
getElementsByTagName
不返回數組。 我做了Array.from(document.getElementByTagName("li"))
以返回一個數組。
另外,您應該使用innerText
代替value
。 value
僅可用於select
, input
和textarea
。
function myFunction(){ let input = parseInt(document.querySelector('#myInput').value); let li = Array.from(document.getElementsByTagName('li')); for (i = 0; i < li.length; i++) { let number = parseInt(li[i].innerText); if (number < input) { li[i].style.display = 'none'; } else { li[i].style.display = ''; } } }
<input type="text" id="myInput" onkeyup="myFunction()" autocomplete="off"> <ul id="myUL"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul>
getElementsByTagName
將返回帶有所有li
的對象。 使用Object.values將它們轉換為array。 它將返回所有li
元素的數組QuerySelector是錯誤的。 您必須使用#
作為ID
function myFunction(){ let input = parseInt(document.querySelector('#myInput').value); let li = Object.values(document.getElementsByTagName('li')); for (i = 0; i < li.length; i++) { number = parseInt(li[i].innerHTML); if (number < input) { li[i].style.display = 'none'; } else { li[i].style.display = ''; } }}
<input type="text" id="myInput" onkeyup="myFunction()" autocomplete="off"> <ul id="myUL"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul>
嘗試使用#查找帶有查詢選擇器的ID。 同樣,數字在innerText
。
function myFunction(){
let input = document.querySelector('#myInput').value;
let li = document.getElementsByTagName('li');
for (i = 0; i < li.length; i++) {
number = parseInt(li[i].innerText);
if (number < parseInt(input)) {
li[i].style.display = 'none';
}
else {
li[i].style.display = '';
}
}
}
this.value
聯綁定中傳遞this.value
,因此不必查找 ul
提供了一個id,因此您最好將其用作選擇器的一部分,以查找關聯的li元素 innerText
,而不是value
因為li
元素沒有值 function myFunction(inputValue) { inputValue = parseInt(inputValue || '0'); let lis = document.querySelectorAll('#myUL li'); lis.forEach(function(li){ let liValue = parseInt(li.innerText); li.style.display = ( liValue < inputValue ? 'none' : ''); }); }
<input type="text" id="myInput" onkeyup="myFunction(this.value)" autocomplete="off"> <ul id="myUL"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.