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