情况1的理解:
var aData = [
{
num : 1,
name : '雪碧',
price : 2.2,
count : 50
},
{
num : 2,
name : '可口可乐',
price : 2.3,
count : 55
}]
for(var i=0;i<aData.length;i++){
var tr = document.createElement('tr'); // 创建的声明写在这里是不是意思:每一次for循环都创建新的tr把上一轮的tr覆盖掉,且在本次循环中把里层for循环的得到的所有td添加到当前的tr里面去
for(var attr in aData[i]){
var td = document.createElement('td');
td.innerHTML = aData[i][attr];
tr.appendChild(td); // 因为tr申明在外面所以每次内层for循环时tr没有变化,只是td被创建新的并覆盖前一个循环的td,这样一堆的td级被装在了一个tr里面?
}
}
情况2的理解:
var aData = [
{
num : 1,
name : '雪碧',
price : 2.2,
count : 50
},
{
num : 2,
name : '可口可乐',
price : 2.3,
count : 55
}]
var tr = document.createElement('tr'); // 创建的声明写在循环外是不是意思:每一次for循环都不影响tr了,嵌套的两个for循环得到的所有td添加到这唯一的tr里面去了?
for(var i=0;i<aData.length;i++){
for(var attr in aData[i]){
var td = document.createElement('td');
td.innerHTML = aData[i][attr];
tr.appendChild(td);
}
}
“覆盖”这个说法好奇怪,不过的确是新建了一个 element。
我感觉你的理解没错的,你自己有测试吗?出来的结果有什么不对的吗?