在javascript中搜索/过滤

时间:2017-03-06 12:13:06

标签: javascript html

抱歉,我的英语不太好,但我希望你能理解我的问题。 我用学生姓名和其他细节制作了我的数据库,包括所有方法,发布,获取,删除和放置。一切顺利。 (我是编程新手,初学者,我不知道这样做的好方法就像我做的那样)。

ime = name // prezime = lastname

var studentiDataStore = {
        studenti: [],
        postStudent: function(studijId, ime, prezime, brIndexa){
            this.studenti.push({
                id:this.studenti.length, 
                studijId: studijId,
                ime: ime,
                prezime: prezime,
                brIndexa: brIndexa
             });
            return this.studenti[this.studenti.length-1];
        },
        getStudent: function(id){
            if(id){
                var targetIndex = -1;
                for(var i=0; i<this.studenti.length; i++){
                    if(this.studenti[i].id===id){
                        targetIndex = i;
                        break;
                    }
                }
                if(targetIndex>-1){
                    return this.studenti[targetIndex];
                } else {
                    return null;
                }
            } else {
                return this.studenti;
            }
        }
    },

现在我有了这段代码来吸引我的学生参加HTMl

var displayStudents = function(){
        var studenti = studentiDataStore.getStudent();
        var htmlPresentation = [];
        for(var i=0; i<studenti.length; i++){
            htmlPresentation.push('<li class="list-group-item">'+ studenti[i].ime + " " + studenti[i].prezime+'</li>');
        }
        document.getElementById("mainContent").innerHTML = '<ul class="list-group">'+ htmlPresentation.join(" ") + '</ul>'
    };

现在我必须为我的学生进行搜索/过滤,我试图找到答案但不成功。 我的问题是,如何制作搜索过滤器,当我写第一个字母(等等)时,它会显示所有以该字母开头的名字?谢谢

3 个答案:

答案 0 :(得分:1)

在列表顶部添加文本输入

<input type="text" id="searchInput" onkeyup="searchFilter()" placeholder="Search for names..">

然后在脚本中添加此函数

function searchFilter() {
    // Declare variables
    var input, filter, ul, li, a, i;
    input = document.getElementById('searchInput');
    filter = input.value.toUpperCase();
    ul = document.getElementsByClassName("list-group")[0];
    li = ul.getElementsByTagName('li');

    // Loop through all list items, and hide those who don't match the search query
    for (i = 0; i < li.length; i++) {            
        if (li[i].innerHTML.toUpperCase().indexOf(filter) > -1) {
            li[i].style.display = "";
        } else {
            li[i].style.display = "none";
        }
    }
}

来源:https://www.w3schools.com/howto/howto_js_filter_lists.asp

答案 1 :(得分:0)

你可以从这个有效的例子中得到一些帮助!

https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_filter_table

答案 2 :(得分:0)

var displayStudents = function(){
        var studenti = studentiDataStore.getStudent();
        var htmlPresentation = [];
        for(var i=0; i<studenti.length; i++){
            if((studenti[i].ime+" "+studenti[i].prezime).startsWith("youname"))
            htmlPresentation.push('<li class="list-group-item">'+ studenti[i].ime + " " + studenti[i].prezime+'</li>');
        }
        document.getElementById("mainContent").innerHTML = '<ul class="list-group">'+ htmlPresentation.join(" ") + '</ul>'
    };