javascript - HTML 标签在另一个标签内循环

标签 javascript html loops dom

我有一个选择和一个 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 的样式。 有人可以帮助我吗? 谢谢。

最佳答案

您需要指定您正在更新样式。

divItems[i].display='block'; 应为 divItems[i].style.display='block';

divItems[i].display='none'; 应为 divItems[i].style.display='none';

此外,您的目标是 #table,但您应该定位 #list,因为这是在主 div 上设置的 id。

完整的 JS:

<script>
    var select = document.getElementById('select');
    var divItems = document.querySelectorAll('#list div');
    var h2Items = document.querySelectorAll('#list 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].style.display='block';
            } else {
                divItems[i].style.display='none';
            }
        }

    });
</script>

关于javascript - HTML 标签在另一个标签内循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58752513/

相关文章:

javascript - 如何在 Apigee 中获取 HTTP header 的完整值?

html - 如何制作全局导航栏(所有页面一个文件)?

使用 FFMPEG 的 PHP HTML5 兼容 MP4 视频

php - .php 文件在 Chrome 中显示代码

javascript - 根据所选计划查找总金额

html - 使用结束事件中断循环 html5 视频

javascript - 如何简单地将输入的名称点转换为json格式?

javascript - 不断读取JSON数据库

python - 迭代 CGI 文件中的列表并打印 html 中的值

Javascript $q Promise 请求覆盖还是堆栈?