Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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 根据接收到的输入从JSON获取数据_Javascript_Json - Fatal编程技术网

Javascript 根据接收到的输入从JSON获取数据

Javascript 根据接收到的输入从JSON获取数据,javascript,json,Javascript,Json,我需要根据收到的输入获取数据 例如,如果输入为“royalpython”,我应该获得royalpython的详细信息。但我将值输入fname。但我不确定从数组中获取数据的函数是否正确。我还想知道是否有更短的方法来实现这一点。请帮忙 我正在为此使用JavaScript,我的代码和网页外观如下: <!DOCTYPE html> <html> <body> <form> <input type="text" name="fname" re

我需要根据收到的输入获取数据

例如,如果输入为“royalpython”,我应该获得royalpython的详细信息。但我将值输入fname。但我不确定从数组中获取数据的函数是否正确。我还想知道是否有更短的方法来实现这一点。请帮忙

我正在为此使用JavaScript,我的代码和网页外观如下:

<!DOCTYPE html> 
<html> 
<body>  

<form> <input type="text" name="fname" required> 
<button onclick="myFunction()">OK</button> `enter code here`
</form>  
<p id="demo"></p>  
<script> var text = '{"animals":[' + 
'{"Common Name":"Royal Python","Order":"Squamata","Family":"Boidae","Genus":"Python","Species":"regius","Zoo":"Blackpool Zoo","Number":4 },' + 
'{"Common Name":"Emperor Penguin","Order":"Sphenisciformes","Family":"Spheniscidae","Genus":"Aptenodytes","Species":"forsteri",`   "Zoo":"Welsh Mountain Zoo","Number":35 },' +` 
'{"Common Name":"Chimpanzee","Order":"Primates","Family":"Pongidae","Genus":"Pan","Species":"troglodytes",    "Zoo":"Blackpool Zoo","Number":8 }]}';  

obj = JSON.parse(text);  


//function to fetch data based on input

function myFunction(fname) 
{ var ani = ""; 
if (document.getElementByname("fname")="Royal Python")   
var ani =  document.getElementById("demo").innerHTML = obj.animals[0].Zoo + " " + obj.animals[0].Species; }}  </body> </html>

好`在这里输入代码`

var text='{“动物”:['+ “{”普通名称“:”皇家蟒蛇“,”目“:”鳞甲“,”科“:”蟒科“,”属“,”蟒蛇“,”种“,”regius“,”动物园“:”布莱克浦动物园“,”编号“:”4},+ “{”俗名“:”帝企鹅“,”目“:”狮鹫目“,”科“:”狮鹫科“,”属“,”属“,”种“,”福斯特“,”动物园“:”威尔士山动物园“,”编号“:”35“,+” “{”共同名称“:”黑猩猩“,”目“:”灵长类“,”科“:”庞吉达“,”属“,”潘“,”种“,”特罗格洛蒂“,”动物园“:”布莱克浦动物园“,”编号“:”8}]}”; obj=JSON.parse(文本); //函数根据输入获取数据 函数myFunction(fname) {var ani=”“; if(document.getElementByname(“fname”)=“Royal Python”) var ani=document.getElementById(“demo”).innerHTML=obj.animals[0]。Zoo+“”+obj.animals[0]。Species;}
您的代码中存在许多问题:

document.getElementByname(“fname”)=“Royal Python”
应该是
document.getElementsByName(“fname”)[0]。value==“Royal Python”

此外,编写文本字符串然后将其解析为JSON也很麻烦。只需使用一个JavaScript对象

当你试图确定动物时,你也给自己带来了困难。如果浏览器支持,请使用

下面是一个工作示例:

var obj={动物:{共同名称:“皇家蟒蛇”,目:“壁虎”,科:“蟒蛇”,属:“蟒蛇”,种:“雷吉乌斯”,动物园:“布莱克浦动物园”,编号:4},{共同名称:“帝企鹅”,目:“狮形目”,科:“狮形目”,属:“无齿龙”,种:“福斯特”,动物园:“威尔士山动物园”,编号:35},{共同名称:“黑猩猩”,目:“灵长类”,科:“魟科”,属:“魟”,种:“魟魟”,动物园:“布莱克浦动物园”,编号:8}]};
//函数根据输入获取数据
函数myFunction(){
var name=document.getElementsByName(“fname”)[0]。值;
var指数=对象动物findIndex(功能(项目){
return item.CommonName==名称;
});
如果(索引>=0){
document.getElementById(“demo”).innerHTML=obj.anists[index]。Zoo+“”+obj.anists[index]。物种;
}
}

好啊

这里有一个问题的解决方案,它使用
for
循环检查动物数组的每个索引是否匹配。此匹配也不区分大小写


好`在这里输入代码` 变量animalsArr=[{ “commonName”:“皇家蟒蛇”, “命令”:“鳞片”, “家族”:“博伊科”, “属”:“蟒蛇”, “物种”:“regius”, “动物园”:“布莱克浦动物园”, “数字”:4 }, { “commonName”:“帝企鹅”, “秩序”:“狮身人面目”, “科”:“天蛾科”, “属”:“无齿蛇”, “物种”:“福斯特”, “动物园”:“威尔士山动物园”, “数字”:35 }, { “commonName”:“黑猩猩”, “秩序”:“灵长类”, “家族”:“庞吉达”, “属”:“潘”, “物种”:“troglodytes”, “动物园”:“布莱克浦动物园”, “数字”:8 }] 函数fetchAnimal(){ var i; var len=动物体长度; //将输入名称转换为小写 var name=document.getElementsByName('fname')[0]。value.toLowerCase(); 对于(i=0;i
那么您的问题是什么?欢迎来到Stack Overflow!我已经编辑了你的问题。很高兴你给我们看了一些代码;这有助于我们更好地了解您面临的问题。然而,目前还不清楚问题出在哪里。我建议你提出你的问题,告诉我们什么东西在你的代码中不起作用。祝你好运谢谢你的回复。现在我对问题进行了编辑,以便更多地理解。希望如此helps@sandy如果这个答案对你有帮助,你应该接受它