关于js中for循环申明的使用,理解是否正确?

情况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);
        }
}
阅读 2.3k
3 个回答

“覆盖”这个说法好奇怪,不过的确是新建了一个 element。
我感觉你的理解没错的,你自己有测试吗?出来的结果有什么不对的吗?

你的理解是正确的

如果是关于 for 循环的理解的话是对的;
你这个应该是想用 JavaScript动态添加创建 table吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题