围绕Json / HTML混淆,不确定变量I和j?

时间:2017-05-06 20:13:47

标签: html json variables methods

这是Json代码的一个片段:

myObj = {
  'name': 'John',
  'age': 30,
  'cars': [
    {'name': 'Ford', 'models': ['Fiesta', 'Focus', 'Mustang']},
    {'name': 'BMW', 'models': ['320', 'X3', 'X5']},
    {'name': 'Fiat', 'models': ['500', 'Panda']}
  ]
}

var myObj, i, j, x = '';

myObj = {
  'name': 'John',
  'age': 30,
  'cars': [
    {'name': 'Ford', 'models': ['Fiesta', 'Focus', 'Mustang']},
    {'name': 'BMW', 'models': ['320', 'X3', 'X5']},
    {'name': 'Fiat', 'models': ['500', 'Panda']}
  ]
};
for (i in myObj.cars) {
  x += '<h1>' + myObj.cars[i].name + '</h1>';
  for (j in myObj.cars[i].models) {
    x += myObj.cars[i].models[j] + '<br>';
  }
}
document.getElementById('demo').innerHTML = x;

我的主要困惑是for var myObj, i , j, x,什么是ijx?是i只是引用Ford,而j是指BMW吗?

对于此部分,for (i in myObj.cars) {x += "<h1>" + myObj.cars[i].name + "</h1>"; I究竟会发生什么,只需添加新名称,h1是什么?

2 个答案:

答案 0 :(得分:0)

i 是您汽车的索引。

0: { "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
1: { "name":"BMW", "models":[ "320", "X3", "X5" ] },
2: { "name":"Fiat", "models":[ "500", "Panda" ] }

j 是模型的索引。

0: "Fiesta"
1: "Focus"
2: "Mustang"

答案 1 :(得分:0)

首先,这是一个javascript对象,但你仍然可以操作它。您可能希望对JSON和javascript之间的主要区别进行一些研究。

至于你问题的第一部分:i, j, x都是指新变量,它等同于说

var i;
var j;
var x = "";
使用空字符串初始化

x,因为它将在程序中稍后包含一个字符串。

变量i用作for (i in myObj.cars) {}中的索引,以跟踪对象myObj.cars的每个属性。

这包括:

0: {'name': 'Ford', 'models': ['Fiesta', 'Focus', 'Mustang']},
1: {'name': 'BMW', 'models': ['320', 'X3', 'X5']},
2: {'name': 'Fiat', 'models': ['500', 'Panda']}

同样,块j中使用变量for (j in myObj.cars[i].models) {}来引用myObj.cars[i].models内的不同对象。

例如,在循环的第一次迭代期间,j将等于0,i将等于0,myObj.cars[i].models[j]将引用此数组:[ "Fiesta", "Focus", "Mustang" ]

至于问题的第二部分<h1>只是一个HTML标头标记,您的程序将自定义此标头标记内的文字。

在这部分节目中:

for (i in myObj.cars) {
  x += "<h1>" + myObj.cars[i].name + "</h1>";

i被设置回零,现在它将循环遍历myObj.cars内的整个对象列表

在javascript中,您可以“重新初始化”变量,或者更好地说,动态更改其值。