如果UL LI中没有类,则显示元素

时间:2018-06-29 11:21:25

标签: javascript

我有以下功能可以过滤LI列表

function searchCourse() {
    var input, filter, ul, li, a, i;
    input = document.getElementById("courseFilter");
    filter = input.value.toUpperCase();
    ul = document.getElementById("gallery");
    li = ul.getElementsByTagName("li");

    for (i = 0; i < li.length; i++) {
        a = li[i].getElementsByTagName("h3")[0];
        if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
            li[i].classList.add("active");
        } else {
            li[i].classList.remove("active");
        }
    } 
}

我现在要做的是在用户在框中键入内容时,如果没有一个LI项处于活动状态,则应该删除以下div的隐藏类:

<div class="calendar-occasion__no-results hidden" id="no-results">No courses found. We are always adding new events to our calendar.<br /> Please register your interest by <a href="@Model.ContactUs.LinkUrl">getting in touch with us</a></div>

每次用户在过滤器框中键入脚本时,该脚本都应处于活动状态;如果激活的类超过1个,则LI会将隐藏的类添加回div。

正确的语法是什么?

1 个答案:

答案 0 :(得分:0)

使用onkeyup元素的input事件,然后在函数内部仅检查活动li项的数量:

<script>
  function checkActiveItems() {
    alert("do the checking");
  }
</script>
<input type="text" onkeyup="checkActiveItems()" />