Jquery 选择对象中的名称
首先,我还在学习,所以请温柔一点:) 我有一个json响应,我想在其中选择一些特定的元素。 我试图在对象中获取一些具有特定名称的元素,并想测试它是否与预定义名称匹配。这些是带有特定名称的产品规格,如“长度”、“宽度”等 我很难找到那些特定的名字,如果找到了,就得到它们的“value”属性 所以我得到的是: JSON响应:Jquery 选择对象中的名称,jquery,json,Jquery,Json,首先,我还在学习,所以请温柔一点:) 我有一个json响应,我想在其中选择一些特定的元素。 我试图在对象中获取一些具有特定名称的元素,并想测试它是否与预定义名称匹配。这些是带有特定名称的产品规格,如“长度”、“宽度”等 我很难找到那些特定的名字,如果找到了,就得到它们的“value”属性 所以我得到的是: JSON响应: { "product": { "specs": { "231638": { "id": 231638, "tit
{
"product": {
"specs": {
"231638": {
"id": 231638,
"title": "Length (mm)",
"value": "1200"
},
"231641": {
"id": 231641,
"title": "Width (mm)",
"value": "800"
},
"231644": {
"id": 231644,
"title": "Height (mm)",
"value": "144"
} //etc etc
现在我只想从规范“length”和“height”中获取两个value
属性。因此,首先我必须查看这两个名称是否存在,是否与“长度”和“高度”匹配,如果存在,则获取它们的值
属性。那就是我需要帮助的地方
最终结果必须是
<div class="somediv">
<span class="width">1200</span>
<span class="height">144</span>
</div>
我完全被困在这里了。我尝试过以下方法:
(spec.hasOwnProperty("title"));
或
非常感谢您的帮助:)$.getJSON(url、函数(数据){
var specsHtml=“”;
$.each(data.product.specs,function(){
//“this”现在是您当前的“spec”,即{“id”:…,“title”:…,等等}
specsHtml+=''+此.value+'';
});
specsHtml+='';
}
container.find('.product bottom.measurements span').html(specsHtml);
});
$.getJSON(url、函数(数据){
var specsHtml=“”;
$.each(data.product.specs,function(){
//“this”现在是您当前的“spec”,即{“id”:…,“title”:…,等等}
specsHtml+=''+此.value+'';
});
specsHtml+='';
}
container.find('.product bottom.measurements span').html(specsHtml);
});
var数据={
“产品”:{
“规格”:{
"231638": {
“id”:231638,
“标题”:“长度(mm)”,
“值”:“1200”
},
"231641": {
“id”:231641,
“标题”:“宽度(mm)”,
“值”:“800”
},
"231644": {
“id”:231644,
“标题”:“高度(mm)”,
“值”:“144”
}//等等
}
}
};
变量长度=0,宽度=0,高度=0,
reLength=/length/i,
倒带长度=/width/i,
再重量=/高度/i;
$.each(data.product.specs,函数(specId,spec){
if(释放长度试验(规范标题))
长度=规格值;
否则如果(重新布线试验(规范标题))
宽度=规格值;
否则(重新称重试验(规范标题))
高度=规格值;
});
var html=''+
“w:”+宽度+“”+
“h:”+高度+“”+
'l:'+长度+'+
'';
$(document.body).html(html)代码>
.somediv>span{padding:10px;display:inline block;}
var数据={
“产品”:{
“规格”:{
"231638": {
“id”:231638,
“标题”:“长度(mm)”,
“值”:“1200”
},
"231641": {
“id”:231641,
“标题”:“宽度(mm)”,
“值”:“800”
},
"231644": {
“id”:231644,
“标题”:“高度(mm)”,
“值”:“144”
}//等等
}
}
};
变量长度=0,宽度=0,高度=0,
reLength=/length/i,
倒带长度=/width/i,
再重量=/高度/i;
$.each(data.product.specs,函数(specId,spec){
if(释放长度试验(规范标题))
长度=规格值;
否则如果(重新布线试验(规范标题))
宽度=规格值;
否则(重新称重试验(规范标题))
高度=规格值;
});
var html=''+
“w:”+宽度+“”+
“h:”+高度+“”+
'l:'+长度+'+
'';
$(document.body).html(html)代码>
.somediv>span{padding:10px;display:inline block;}
谢谢你的回答。!但是,这会使所有字段都返回“0”。你能解释一下“/length/i”的作用吗?好的,我想我知道出了什么问题。您的测试spec.title
,使用该正则表达式,例如宽度。然而,这总是错误的,因为它需要与该规范的值名
进行比较。你能帮我一下吗?@Meules,我已经用一个可运行的代码片段替换了代码。检查它,好吧,我现在明白了:)正则表达式查找部分名称,而不是全名!它现在起作用了。。。非常感谢谢谢你的回答。!但是,这会使所有字段都返回“0”。你能解释一下“/length/i”的作用吗?好的,我想我知道出了什么问题。您的测试spec.title
,使用该正则表达式,例如宽度。然而,这总是错误的,因为它需要与该规范的值名
进行比较。你能帮我一下吗?@Meules,我已经用一个可运行的代码片段替换了代码。检查它,好吧,我现在明白了:)正则表达式查找部分名称,而不是全名!它现在起作用了。。。非常感谢
(spec.hasOwnProperty("title"));
var specs = [];
data.product.specs.forEach(data.product.specs => {
if (data.product.specs)
for (var spec in data.product.specs)
specs.push(spec);
})
$.getJSON(url, function(data){
var specsHtml = "<div class="somediv">";
$.each(data.product.specs, function(){
//'this' is now your current 'spec' which is { "id": ..., "title": ..., etc. }
specsHtml += '<span class=\"';
if (this.title.includes('Length'))
specsHtml += 'length';
else
specsHtml += 'width';
specsHtml = specsHtml + '\">' + this.value + '</span>';
});
specsHtml += '</div>';
}
container.find('.product-bottom .measurements span').html(specsHtml);
});