【发布时间】:2020-03-04 06:10:24
【问题描述】:
我有一个选择和div 元素列表,如下所示:
<select name="select" id="select">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
<option value="d">d</option>
</select>
<button>submit</button>
<div id='list'>
<div><h2>a</h2>0</div>
<div><h2>b</h2>1</div>
<div><h2>c</h2>2</div>
<div><h2>d</h2>3</div>
<div><h2>a</h2>0</div>
<div><h2>b</h2>1</div>
<div><h2>c</h2>2</div>
<div><h2>d</h2>3</div>
</div>
我只想显示具有与所选值匹配的h2 文本的div。
我正在尝试以下 JavaScript 循环:
<script>
var select = document.getElementById('select');
var divItems = document.querySelectorAll('#table div');
var h2Items = document.querySelectorAll('#table div h2');
var button = document.querySelector('button');
button.addEventListener('click',function(){
var selectValue = select.value;
for(i=0; i < divItems.length; i++){
var h2Text = h2Items[i].innerHTML;
if (h2Text == selectValue){
divItems[i].display='block';
} else {
divItems[i].display='none';
}
}
});
但它不起作用。
console.log 表明h2 的文本和选择的值都是正确的,
但我不知道如何控制div 的风格。
有人可以帮助我吗?
谢谢。
【问题讨论】:
-
你好@Judith,欢迎来到 Stack Overflow。仅供参考:
querySelectorAll返回NodeList。NodeList在大多数浏览器中都支持 forEach。语法更简洁,因此更容易理解。 developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach
标签: javascript html loops dom