javascript - Flitering array based on select value
问题描述
I have listed and I want when user select the value from the dropdown then based on that value list will append into HTML I have tried but my list not clearing the previous dom its appending, Can someone help me with the solutions here is my code
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<link href="https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script>
var Result = [];
inputvalue="A"
alldata = [
{
Answer: "Ans A",
Title: "For A",
Topic: "A"
},
{
Answer: "Ans B",
Title: "For B",
Topic: "B"
},
{
Answer: "Ans C",
Title: "For C",
Topic: "C"
},
{
Answer: "Ans second A",
Title: "For 1A",
Topic: "A"
}
];
$(function () {
onSuccess(alldata,inputvalue)
});
function onSuccess(objItems,inputvalue) {
objItems = objItems.filter(x => x.Topic == inputvalue)
for (var i = 0; i < objItems.length; i++) {
var data = '<h3 class="myheading">' + objItems[i].Title + '</h3>'
data += '<div class="mydiv">'
data += '<p>' + objItems[i].Answer + '</p>'
data += '</div>'
$('#accordion').append(data);
}
$("#accordion").accordion({
heightStyle: "Content",
collapsible: true
});
}
function myFunction() {
var SelectedValue = document.getElementById("mySelect").value;
document.getElementById("demo").innerHTML = "You selected: " + SelectedValue;
onSuccess(alldata,SelectedValue);
};
</script>
<select id="mySelect" onchange="myFunction()">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
<p>When you select a new car, a function is triggered which outputs the value of the selected car.
</p>
<p id="demo"></p>
<div class="mainWrapper" style="margin-top:-30px">
<h1 class="headingtext" style="font-weight:800">Fragen & Antworten</h1>
<div id="accordion" class="acco">
</div>
解决方案
function onSuccess(objItems,inputvalue) {
objItems = objItems.filter(x => x.Topic == inputvalue)
$("#accordion").empty();
for (var i = 0; i < objItems.length; i++) {
var data = '<h3 class="myheading">' + objItems[i].Title + '</h3>'
data += '<div class="mydiv">'
data += '<p>' + objItems[i].Answer + '</p>'
data += '</div>'
$('#accordion').append(data);
}
$("#accordion").accordion({
heightStyle: "Content",
collapsible: true
});
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
var script = document.createElement('script');
var script_ui = document.createElement('script');
link.href = 'https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css';
script.src = 'https://code.jquery.com/jquery-1.10.2.js';
script_ui.src = 'https://code.jquery.com/ui/1.10.4/jquery-ui.js';
head.appendChild(link);
head.appendChild(script);
head.appendChild(script_ui);
}
推荐阅读
- javascript - 从另一个屏幕导航后如何重新加载页面
- javascript - 动态传递未知数量的参数以响应路由器
- sql - 在scandate列中插入时间戳列?
- heroku - heroku-18 中启动 Chrome 无头 = false 的必要构建包
- python - 如何在 Keras 功能 API 中使用逐元素乘法训练来组合 2 个向量?
- css - 引导网格 - 扩展背景颜色
- android - 如何从 Environment.DIRECTORY_PICTURE 目录中获取所有图像并显示在我的自定义画廊中
- ruby - 在Ruby中使用方括号调用函数时如何获取args
- html - 如何在没有 iframe 的情况下获得全屏 div?
- laravel - 我在使用“AXIOS PATCH”方法时遇到问题