如何为没有文本内容的 div 数组创建搜索功能?
How can I create a search feature for an array of divs with no text content?
有没有一种方法可以根据元素的值、ID 或名称等为 HTML 元素创建搜索过滤器,就像您可以根据元素文本内容创建搜索过滤器一样?这是我对带有文本内容的 div 的搜索过滤器。如果 div 没有文本内容,有没有办法实现搜索过滤器?我可以访问元素标签并以某种方式使用它吗?
Javascript 根据文本内容过滤
let input = document.querySelector(`#input`);
let animalDivs = document.querySelectorAll(`.animal`);
input.addEventListener(`keyup`, function(e) {
const term = e.target.value.toLowerCase();
animalDivs.forEach(function(div) {
const animal = div.textContent.toLocaleLowerCase();
if (animal.includes(term)) {
div.style.display = "block"
} else {
div.style.display = "none"
}
});
});
<input type="text" id="input">
<div class="container">
<div id="monkey" class="animal">The Monkey</div>
<div id="mongoose" class="animal">The Mongoose</div>
<div id="mouse" class="animal">The Mouse</div>
<div id="moose" class="animal">The Moose</div>
</div>
您可以使用数据属性
tag
不是 recommended/known 标签属性
同时降低模板文字的速度。我也选择使用输入事件侦听器,因为它处理 paste
let input = document.getElementById('input');
let animalDivs = document.querySelectorAll('.animal');
input.addEventListener('input', function(e) {
const term = this.value.toLowerCase();
animalDivs.forEach(function(div) {
const animal = div.dataset.tag.toLocaleLowerCase();
div.hidden = !animal.includes(term)
});
});
<input type="text" id="input" autocomplete="off">
<div class="container">
<div data-tag="The Monkey" id="monkey" class="animal">The Monkey</div>
<div data-tag="The Mongoose" id="mongoose" class="animal">The Mongoose</div>
<div data-tag="The Mouse" id="mouse" class="animal">The Mouse</div>
<div data-tag="The Moose" id="moose" class="animal">The Moose</div>
</div>
有没有一种方法可以根据元素的值、ID 或名称等为 HTML 元素创建搜索过滤器,就像您可以根据元素文本内容创建搜索过滤器一样?这是我对带有文本内容的 div 的搜索过滤器。如果 div 没有文本内容,有没有办法实现搜索过滤器?我可以访问元素标签并以某种方式使用它吗?
Javascript 根据文本内容过滤
let input = document.querySelector(`#input`);
let animalDivs = document.querySelectorAll(`.animal`);
input.addEventListener(`keyup`, function(e) {
const term = e.target.value.toLowerCase();
animalDivs.forEach(function(div) {
const animal = div.textContent.toLocaleLowerCase();
if (animal.includes(term)) {
div.style.display = "block"
} else {
div.style.display = "none"
}
});
});
<input type="text" id="input">
<div class="container">
<div id="monkey" class="animal">The Monkey</div>
<div id="mongoose" class="animal">The Mongoose</div>
<div id="mouse" class="animal">The Mouse</div>
<div id="moose" class="animal">The Moose</div>
</div>
您可以使用数据属性
tag
不是 recommended/known 标签属性
同时降低模板文字的速度。我也选择使用输入事件侦听器,因为它处理 paste
let input = document.getElementById('input');
let animalDivs = document.querySelectorAll('.animal');
input.addEventListener('input', function(e) {
const term = this.value.toLowerCase();
animalDivs.forEach(function(div) {
const animal = div.dataset.tag.toLocaleLowerCase();
div.hidden = !animal.includes(term)
});
});
<input type="text" id="input" autocomplete="off">
<div class="container">
<div data-tag="The Monkey" id="monkey" class="animal">The Monkey</div>
<div data-tag="The Mongoose" id="mongoose" class="animal">The Mongoose</div>
<div data-tag="The Mouse" id="mouse" class="animal">The Mouse</div>
<div data-tag="The Moose" id="moose" class="animal">The Moose</div>
</div>