Javascript 使用$each访问Json中的嵌套数组
因此,当json在嵌套数组中时,我在访问json时遇到问题。我以前用一个数组和我的.$将json设置成这样,每个函数都工作得很好。然而,我有麻烦修改它为这个。 Json:Javascript 使用$each访问Json中的嵌套数组,javascript,jquery,json,Javascript,Jquery,Json,因此,当json在嵌套数组中时,我在访问json时遇到问题。我以前用一个数组和我的.$将json设置成这样,每个函数都工作得很好。然而,我有麻烦修改它为这个。 Json: { “t内容”:[{ “名称”:“败血症”, “url”:“, “图像”:“, “变体”:[{ “条件”:“社区获得”, “微生物”:“金黄色葡萄球菌”, “抗菌剂”:“氟氯西林”, “替代品”:(非过敏性):“, “注释”:“进行全化粪池检查。” }, { “情况”:“如果怀疑腹腔内来源,则社区获得”, “微生物”:“主要是
{
“t内容”:[{
“名称”:“败血症”,
“url”:“,
“图像”:“,
“变体”:[{
“条件”:“社区获得”,
“微生物”:“金黄色葡萄球菌”,
“抗菌剂”:“氟氯西林”,
“替代品”:(非过敏性):“,
“注释”:“进行全化粪池检查。”
}, {
“情况”:“如果怀疑腹腔内来源,则社区获得”,
“微生物”:“主要是革兰氏阴性菌和厌氧菌肠球菌也可能具有特征”,
“抗菌剂”:“复方阿莫西拉韦1.2g静脉注射tds”,
“评论”:“进行全化粪池检查”
}, {
“条件”:“医疗相关”,
“生物体”:“不同”,
“抗菌剂”:“哌拉西林”,
“备选方案”:“咨询顾问微生物学家”,
“评论”:“始终”
}]
}, {
“名称”:“感染性心内膜炎(IE)(待血培养结果)”,
“url”:“,
“图像”:”
}, {
“名称”:“中枢神经系统感染”,
“url”:“,
“图像”:”
}, {
“名称”:“皮肤和软组织感染”,
“url”:“,
“图像”:”
}, {
“姓名”:“患有足部感染的糖尿病患者”,
“url”:“,
“图像”:”
}, {
“名称”:“骨和关节感染”,
“url”:“,
“图像”:“2它不起作用的原因
首先,javascript区分大小写,您的变体不同
子项。条件
在以下情况下失败:
"Condition":"Community-acquired if intra- abdominal source suspected",
"Organisms":"Predominantly Gram negatives and anaerobes Enterococci may also feature",
"Antimicrobial":"Co-amoxiclav 1.2g iv tds",
"Comments":"Perform full septic screen"
所以把“条件”改为“条件”,等等
第二个原因是
将$(info).appendTo(“.menu”);
更改为$(.menu”).append(info)
为什么?
$(“.menu”).append(info)
只会将字符串粘贴到所选DOM元素中
但是你用
$(信息).
而jquery现在可以做各种新奇的事情
它尝试将其用作DOM选择器,或创建新元素
因为您的信息以
$(info)开头,尝试创建DOM元素并删除所有文本。只保留
,因为br不能包含内容
尝试删除首字母
,您将看到以下错误:
Uncaught Error: Syntax error, unrecognized expression:Community-acquiredStaph. aureusFlucloxacillin...
例如,如果您要键入$(“hahaha”)
,Jquery将尝试查找标记
,因此当您删除
时,您的$(信息)
正在查找标记
但是,因为您的字符串将包含像“-()”这样的奇怪字符,所以它将失败。因此出现上述错误
因此,您只能像这样添加html:
$("<span>hahah</span>").appendTo($(".menu"));
$(info).appendTo(“.menu”);
工作时的一个示例是:
$.each(data.tcontent, function(i, item) {
if(item.Name=='Septicaemia'){
var search = item.Variations;
$.each(item.Variations, function(j, subitem) {
var info = "<p>" + subitem.condition + subitem.organisms + subitem.antimicrobial + subitem.alternative + subitem.comments + "</p>";
$(info).appendTo(".menu");
});
}
});
$。每个(data.t内容,函数(i,项){
如果(item.Name=='败血病〕{
变量搜索=项目变量;
$。每个(项目。变量,功能(j,子项目){
var info=“”+subitem.condition+subitem.organics+subitem.antimicrobial+subitem.alternative+subitem.comments+””;
$(信息).appendTo(“.menu”);
});
}
});
使用以下json:
您真的需要使用$吗。每个?您可以为(对象中的var键){var item=object[key];}
和数组的标准语法。变体数组中的第一个对象的属性名都是小写,其余对象的属性名都以大写字母开头。这是在您的真实代码中出现的还是只是复制/粘贴问题?条件到条件我在第一个问题上出现了一个延迟错误,抱歉。我更改了它们,我也更改了您给出的第二个原因,但仍然没有成功。我相信您给出的第二个错误原因实际上是错误的,因为我在一个类似的方法中使用了该语法,该方法仅适用于单个json数组,我对此没有任何问题。这取决于情况,但在这种情况下,没有,因为json不同,您需要仍然要更改json。如果代码保持不变,请将所有firstcase键更改为小写。@Darragh我现在解释了为什么$(info).appendTo();在您的代码大小写中不起作用。并添加了一个工作示例。
$("<span>hahah</span>").appendTo($(".menu"));
$("#myDiv").appendTo($(".menu"));
$.each(data.tcontent, function(i, item) {
if(item.Name=='Septicaemia'){
var search = item.Variations;
$.each(item.Variations, function(j, subitem) {
var info = "<p>" + subitem.condition + subitem.organisms + subitem.antimicrobial + subitem.alternative + subitem.comments + "</p>";
$(info).appendTo(".menu");
});
}
});