Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在选择第二个选择菜单选项之前,如何显示所有项目?_Javascript_Html - Fatal编程技术网

Javascript 在选择第二个选择菜单选项之前,如何显示所有项目?

Javascript 在选择第二个选择菜单选项之前,如何显示所有项目?,javascript,html,Javascript,Html,我有两个选择菜单。第二个选择菜单取决于为第一个选择菜单选项选择的内容。当我做出第一个选择时,所有列出的项目都消失了 预期的行为是最初显示所有项目。当我选择第一个选项(即新闻和媒体)时,将只显示新闻文章。当我选择年份时,仅显示该年份的文章 //新闻媒体阵列 常数所有粒子=[ { 公司:“公司1”, 日期:“2020年3月26日”, 文章标题: “文章标题”, articleLink:“#”, 文章类型:“新闻与媒体” }, { 公司:“公司2”, 日期:“2019年11月17日”, 文章标题:

我有两个选择菜单。第二个选择菜单取决于为第一个选择菜单选项选择的内容。当我做出第一个选择时,所有列出的项目都消失了

预期的行为是最初显示所有项目。当我选择第一个选项(即新闻和媒体)时,将只显示新闻文章。当我选择年份时,仅显示该年份的文章

//新闻媒体阵列
常数所有粒子=[
{
公司:“公司1”,
日期:“2020年3月26日”,
文章标题:
“文章标题”,
articleLink:“#”,
文章类型:“新闻与媒体”
},
{
公司:“公司2”,
日期:“2019年11月17日”,
文章标题:
“文章标题”,
articleLink:“#”,
文章类型:“新闻与媒体”
},  
{
公司:“公司3”,
日期:“2017年3月15日”,
文章标题:
“文章标题”,
articleLink:“#”,
文章类型:“分析”
},
{
公司:“公司4”,
日期:“2016年1月3日”,
文章标题:
“文章标题”,
articleLink:“#”,
文章类型:“分析”
},  
{
公司:“公司5”,
日期:“2014年3月13日”,
文章标题:“算术题”,
articleLink:“#”,
文章类型:“新闻”
},
{
公司:“公司6”,
日期:“2013年3月6日”,
文章标题:“文章标题”,
articleLink:“#”,
文章类型:“新闻”
}
];
//排序和子串年
allArticles.sort(函数(a,b){
如果(a.date.substr(-4)>b.date.substr(-4)){
返回-1;
}
如果(a.date.substr(-4)
  • 公司:${news.Company}
  • 开始日期:${news.Date}
  • 标题:
  • 类型:${news.articleType}
  • `; } //输出阵列数据 document.getElementById(“新闻列表”).innerHTML=`${allArticles .map(allArticlesTemplate) .join(“”)`; //过滤器 var articles=document.getElementsByClassName(“article”); 风险值年={ 新闻:[2020年、2019年], 分析:[2017年、2016年], 新闻:[2014年、2013年] }; const select=document.querySelector(“故事年”); 让selectedCategory,selectedYear; 函数changeType(值){ 选择.options.length=0; select.innerHTML='Year'; selectedCategory=值; 年[价值].forEach((e)=>{ const option=document.createElement(“选项”); option.text=e; 选择.insertAdjacentElement(“beforeend”,选项); }); […document.queryselectoral(“.article”)].forEach((article)=>article.classList.add(“hidden”);//重置articles } 功能更改年份(值){ selectedYear=值; […document.querySelectorAll(“.”+selectedCategory)].forEach((el)=>{ el.classList.contains(selectedYear) ?el.类列表。删除(“隐藏”) :el.classList.add(“隐藏”); }); } //重置过滤器 让filterSelection=document.querySelector(“故事类型”); filterSelection.addEventListener(“更改”,函数(){ selectedFilter.classList.remove(“hidden”); }); 函数{ 故事类型。选项[0]。selected=“selected”; 故事年。选项[0]。selected=“selected”; selectedFilter.classList.add(“隐藏”); […document.queryselectoral(“.article”)].forEach((article)=> article.classList.remove(“隐藏”) );//重置项目 }
    li{
    列表样式类型:无;
    }
    a{
    文字装饰:无;
    }
    .隐藏{
    显示:无;
    }
    按钮,清除{
    边界:0;
    背景:#fff;
    }
    
    过滤
    故事类型
    新闻和媒体
    分析
    新闻稿
    年
    清除过滤器
    
    您可以在“重置文章”下添加几行:

     res=[...document.querySelectorAll(".article")].filter((article) => article.classList.contains(value));
     res.forEach(x=>x.classList.remove('hidden'))
    
    演示:


    所以,过滤所需的项目,并从中删除“隐藏”类。注:我想,您可以使用相同的方法按年份进行过滤。

    “预期的行为是,所有项目最初都会显示。当我选择第一个选项(即新闻和媒体)时,只有新闻文章会显示”这两句话相互矛盾other@TJ-页面加载时,将显示所有项目。我选择“新闻和媒体”,则仅显示新闻文章。其他文章将不显示。这是一个过滤器。我正在选择要显示的内容。非常感谢!Np,很乐意帮忙。