将数组中的代码与选择列表中的内容(javascript、json)匹配

将数组中的代码与选择列表中的内容(javascript、json)匹配,javascript,arrays,json,Javascript,Arrays,Json,我一直在尝试制作一个“代码”列表(我从一个.json文件中获取),可以在下拉列表中选择。如果要单击其中一个代码,则应将隐藏的div变为可见,并显示其他信息。导致我出现问题的原因是,当我尝试将列表中的选项值与匹配代码匹配时,它似乎无法匹配。(我有一种感觉,这可能是因为它在我为代码创建的数组中找不到值。) var-codesArray=[]; 函数ajax_get_results(){ var results=document.getElementById(“结果”); var select=do

我一直在尝试制作一个“代码”列表(我从一个.json文件中获取),可以在下拉列表中选择。如果要单击其中一个代码,则应将隐藏的div变为可见,并显示其他信息。导致我出现问题的原因是,当我尝试将列表中的选项值与匹配代码匹配时,它似乎无法匹配。(我有一种感觉,这可能是因为它在我为代码创建的数组中找不到值。)


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");
  }