Javascript JSON文件只显示最后一个条目,尽管ID不同
我的json文件如下所示:Javascript JSON文件只显示最后一个条目,尽管ID不同,javascript,json,Javascript,Json,我的json文件如下所示: var obj = { Dilse : {"name":"Dil Se Re","length":"5:40","songType":"Romantic"}, Dilse : {"name":"Jiya Jale","length":"3:50","songType":"Self Description"}, Dilse : {"name":"Chaiyya Chaiyya","length":"4:30","songType":"Masti"}, Rock
var obj = {
Dilse : {"name":"Dil Se Re","length":"5:40","songType":"Romantic"},
Dilse : {"name":"Jiya Jale","length":"3:50","songType":"Self Description"},
Dilse : {"name":"Chaiyya Chaiyya","length":"4:30","songType":"Masti"},
Rockstar : {"name":"Sadda haq","length":"5:40","songType":"Romantic"},
Rockstar : {"name":"Tum ho Pas Mere","length":"3:50","songType":"Self Description"},
Rockstar : {"name":"Sheher me","length":"4:30","songType":"Masti"},
}
我想在单击Dil se时检索Dilse条目,在单击Rockstar时检索Rockstar条目。我的页面上已经有了Dilse和Rockstar的条目
JS函数如下所示:
function dilSe(){
document.getElementById("div0").innerHTML = ""; var k =0;
if(xhr.readyState==4){
if(xhr.status==200){
var data=xhr.responseText;
var arr=eval(data);
for(var i=0;i<3;i++){ //I dont know if I should itearte like this !?
var link=document.createElement('a');
link.id='name1'+k++;
link.innerHTML="Song Name: " +obj.Dilse.name+"<br/>"+"Song Length: "+obj.Dilse.length+"<br/>"+"Song Type: "+obj.Dilse.songType+"<br/><br/>";
console.log("link.id is "+link.id);
link.setAttribute('href','#');
link.addEventListener('click',albums[link.id]);
div0.appendChild(link);
}
}else{
div0.innerHTML="Oops, error in communication!";
div0.style.color="red";
}
}
}
function rockStar(){
document.getElementById("div0").innerHTML = ""; var k =0; var r=3;
if(xhr.readyState==4){
if(xhr.status==200){
var data=xhr.responseText;
var arr=eval(data);
for(var i=0;i<3;i++){ //I dont know if I should itearte like this !?
var link=document.createElement('a');
link.id='name2'+k++;
link.innerHTML="Song Name: " +obj.Rockstar.name+"<br/>"+"Song Length: "+obj.Rockstar.length+"<br/>"+"Song Type: "+obj.Rockstar.songType+"<br/><br/>";
console.log("link.id is "+link.id);
link.setAttribute('href','#');
console.log("obj.rockstar.name is "+obj.Rockstar.name);
link.addEventListener('click',albums[link.id]);
div0.appendChild(link);
}
}else{
div0.innerHTML="Oops, error in communication!";
div0.style.color="red";
}
}
}
函数dilSe(){
document.getElementById(“div0”).innerHTML=“”;var k=0;
if(xhr.readyState==4){
如果(xhr.status==200){
var data=xhr.responseText;
var arr=评估(数据);
对于(var i=0;i您的JSON对象是不正确的。显然,您不能有多个具有相同密钥的条目(您所做的是告诉JS:“詹姆斯就是这个家伙。啊,不,詹姆斯就是另一个家伙。啊,不,詹姆斯又是第三个家伙”。当然,他只记得最后一个
您需要使用数组。最简单的解决方案是将JSON修改为如下所示:
var obj = {
Dilse :
[
{"name":"Dil Se Re","length":"5:40","songType":"Romantic"},
{"name":"Jiya Jale","length":"3:50","songType":"Self Description"},
{"name":"Chaiyya Chaiyya","length":"4:30","songType":"Masti"},
],
Rockstar :
[
{"name":"Sadda haq","length":"5:40","songType":"Romantic"},
{"name":"Tum ho Pas Mere","length":"3:50","songType":"Self Description"},
{"name":"Sheher me","length":"4:30","songType":"Masti"},
],
}
还有其他可能的选项,例如单个数组(非关联),以前的键是每个对象中的一个值,但这需要您遍历整个数组以找到所需的内容。谢谢您的回答。如果我必须显示Dilse或Rockstar的所有三个条目,您能告诉我如何在函数中迭代吗?我如何在函数中使用obj.Dilse.name/length/songType来显示g设置所有3个条目?var list=obj.Dilse;for(var i=0;i