【发布时间】:2020-01-12 05:23:49
【问题描述】:
我想用 vanilla js 做一张桌子。但是根据我声明变量的位置,我得到了不同的结果。
var body = document.body;
var table = document.createElement('table');
var tr = document.createElement('tr');
var td = document.createElement('td');
body.appendChild(table);
for (var i = 0; i < 3; i +=1) {
table.appendChild(tr);
for (var j = 0; j < 3; j+=1) {
tr.appendChild(td);
td.textContent = 'td';
}
}
我想制作 3*3 的桌子。但它制作了 1*1 表。
var body = document.body;
var table = document.createElement('table');
body.appendChild(table);
for (var i = 0; i < 3; i +=1) {
var tr = document.createElement('tr');
table.appendChild(tr);
for (var j = 0; j < 3; j+=1) {
var td = document.createElement('td');
td.textContent = 'td';
tr.appendChild(td);
}
}
它成功地工作了。有什么区别?
【问题讨论】:
-
这是因为元素被替换了。想象一下,在 for 循环之后,您尝试使用 javascript 访问
tr元素,而tr现在属于哪个?第二个代码解决了这个问题,因为它在每个循环中创建一个新的tr元素。
标签: javascript scope