Javascript 我需要配置两个选择框和一个带有按钮的输入字段

Javascript 我需要配置两个选择框和一个带有按钮的输入字段,javascript,html,Javascript,Html,var输入、过滤器、ol、li、a、i; 函数提交(){ 输入=document.getElementById(“myInput”); filter=input.value.toUpperCase(); ol=document.getElementById(“myList”); li=ol.getElementsByTagName(“li”); 对于(i=0;i-1){ 李[i].style.display=“”; }否则{ li[i].style.display=“无”; } } } 职能转变

var输入、过滤器、ol、li、a、i;
函数提交(){
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
ol=document.getElementById(“myList”);
li=ol.getElementsByTagName(“li”);
对于(i=0;i-1){
李[i].style.display=“”;
}否则{
li[i].style.display=“无”;
}
}
}
职能转变机构(索引){
如果(索引==0){
ol=document.getElementById(“myList”);
li=ol.getElementsByTagName(“li”);
对于(i=0;i-1){
李[i].style.display=index==1?”:“无”;
}否则{
李[i].style.display=index==1?“无”:;
}
}
}
}
功能更改年份(索引){
如果(索引==0){
ol=document.getElementById(“myList”);
li=ol.getElementsByTagName(“li”);
对于(i=0;i-1){
李[i].style.display=“”;
}否则{
li[i].style.display=“无”;
}
}
} 
}
div{
利润率:50像素;
}
#烧焦{
左边距:150像素
}
跨度{
字号:17px;
颜色:#0e0e;
}

筛选结果:
 
年
2018
2017
2016
2015
2014
2013
2012
2011
2010
 
全部的
IoBM
其他
 
搜索结果
出版物:

  • 如果您只想在单击按钮后生效,那么我认为您不需要在下拉列表中添加onchange call

    当元素的值发生更改时,将发生onchange事件

    您应该有一个用于迭代和选择绑定到按钮onclick的输出的函数,它应该基于选择框的选定值工作

    如果希望在选择框中的值更改时生效,则还需要定义onchange方法

    编辑:

    因此,我要做的是改变以使其发挥作用:

  • 我将为每个li定义name='institution\u name',而不是使用a href来过滤列表
  • 删除onchange方法并定义一个submit方法
  • 在submit方法中,使用类似(伪代码)的代码:
  • 提交方法:

    function submit() {
        // Declare separate filter for year and institution
        var year_input,institution_input , year_filter, institution_filter, ul, li, a, i;
        year_input = document.getElementById('year');
        // this will hold the selected year e.g. 2018
        year_filter = year_input.value.toUpperCase();
        institution_input = document.getElementById('institution');
        // this will hold the selected institution
        institution_filter = institution_input.value.toUpperCase();
               ol = document.getElementById("myList");
               li = ol.getElementsByTagName("li");
    
        // Loop through all list items, and hide those who don't match the search query
        for (i = 0; i < li.length; i++) {
        // based on your html put the proper condition here
            if (li[i].id == year_filter && li[i].name == institution_filter)  {
            // show if both condition apply        
                li[i].style.display =  "" ;
            } else {
            //hide otherwise
                li[i].style.display = "none";
            }
        }
    }
    
    函数提交(){
    //为年份和机构声明单独的筛选器
    var年度输入、机构输入、年度过滤器、机构过滤器、ul、li、a、i;
    年份输入=document.getElementById(“年份”);
    //这将适用于选定的年份,例如2018年
    year_filter=year_input.value.toUpperCase();
    机构输入=document.getElementById(“机构”);
    //这将保存所选机构
    institution_filter=institution_input.value.toUpperCase();
    ol=document.getElementById(“myList”);
    li=ol.getElementsByTagName(“li”);
    //循环浏览所有列表项,并隐藏与搜索查询不匹配的项
    对于(i=0;i
    首先,感谢您的帮助,但我已经完成了,但列表没有更新。