将数组中的代码与选择列表中的内容(javascript、json)匹配
我一直在尝试制作一个“代码”列表(我从一个.json文件中获取),可以在下拉列表中选择。如果要单击其中一个代码,则应将隐藏的div变为可见,并显示其他信息。导致我出现问题的原因是,当我尝试将列表中的选项值与匹配代码匹配时,它似乎无法匹配。(我有一种感觉,这可能是因为它在我为代码创建的数组中找不到值。)将数组中的代码与选择列表中的内容(javascript、json)匹配,javascript,arrays,json,Javascript,Arrays,Json,我一直在尝试制作一个“代码”列表(我从一个.json文件中获取),可以在下拉列表中选择。如果要单击其中一个代码,则应将隐藏的div变为可见,并显示其他信息。导致我出现问题的原因是,当我尝试将列表中的选项值与匹配代码匹配时,它似乎无法匹配。(我有一种感觉,这可能是因为它在我为代码创建的数组中找不到值。) var-codesArray=[]; 函数ajax_get_results(){ var results=document.getElementById(“结果”); var select=do
var-codesArray=[];
函数ajax_get_results(){
var results=document.getElementById(“结果”);
var select=document.getElementById(“代码”);
var hr=新的XMLHttpRequest();
hr.open(“GET”,“ainekood_pohiandmed.json”,true);
hr.setRequestHeader(“内容类型”,“应用程序/json”,true);
hr.onreadystatechange=函数(){
如果(hr.readyState==4&&hr.status==200){
var data=JSON.parse(hr.responseText);
results.innerHTML=“”;
//-应该在div中显示这个!
results.innerHTML=“+data[0].印地安语+”“+data[0].印地安语+”(“+data[0].courseName+”EAP:“+data[0].EAP+”Hindamisviis:“+data[0].印地安语+”学期:“+data[0].学期+”Oppejoud:“+data[0].ppejud+”;
//将代码添加到选择表单中
for(数据中的var obj){
var opt=document.createElement('option');
var代码=数据[obj]。ainekood;
opt.value=代码;
opt.innerHTML=代码;
选择.appendChild(opt);
//将代码添加到数组中
codesArray.push(代码);
}
//获取所有代码
//console.log(codesArray);
}
}
hr.send(空);
results.innerHTML=“请求…”;
//这里没有任何代码。。。
//console.log(codesArray);
}
//这不管用。。。
函数expandDivs(elem){
for(代码数组中的var代码){
if(elem.value==codesArray[code]){
document.getElementById('results').style.display=“block”;
log(“找到匹配:“+elem.value+”等于“+codesArray[code]);
}否则{
document.getElementById('results').style.display=“无”;
console.log(“未找到匹配项”);
}
}
}
//手工比较作品
函数expandDiv(elem){
如果(元素值==“AIA6010”| |元素值==“AIA6020”){
document.getElementById('results').style.display=“block”;
console.log(“找到匹配项:“+elem.value”);
}否则{
document.getElementById('results').style.display=“无”;
console.log(“未找到匹配项”);
}
}
所有代码-您使用的“for”是滚动对象中的键,它不适用于数组 但是有一个javascript函数,它允许检查您想要的内容,而不必滚动数组 像这样:
if(codesArray.indexOf(elem.value) != -1){ //if element is in array, it'll return the index of the element in array, or -1 if it's not in the array.
var match_index = codesArray.indexOf(elem.value)
document.getElementById('results').style.display = "block";
console.log("Match found: "+elem.value+" EQUALS "+codesArray[match_index]);
} else {
document.getElementById('results').style.display = "none";
console.log("No matches found");
}
您的
codesArray
是一个类似['code1','code2','code3']
的数组。选择的值也是code1
。当您转到codesArray['code1']
时,您将无法定义。和假匹配。
if(codesArray.indexOf(elem.value) != -1){ //if element is in array, it'll return the index of the element in array, or -1 if it's not in the array.
var match_index = codesArray.indexOf(elem.value)
document.getElementById('results').style.display = "block";
console.log("Match found: "+elem.value+" EQUALS "+codesArray[match_index]);
} else {
document.getElementById('results').style.display = "none";
console.log("No matches found");
}