问题描述
for (var k = 1; k <= totalDay; k++) {
var dayTd = document.createElement("td");
var dayNum = document.createTextNode(k);
dayTd.appendChild(dayNum);
weekTr.appendChild(dayTd);
if ((firstDay + k) % 7 == 0) {
var weekTr = document.createElement("tr");
}
calendar.appendChild(weekTr);
}
我是 JavaScript 新手,正在尝试制作日历。我尝试打印出一个月的天数,意外地发现以这种方式编写的代码有效!虽然它成功打印出结果,但我真的不明白这个循环中的 calendar.appendChild(weekTr) 是如何工作的。我想它应该在循环中的一个 tr 中保存七个 tds 然后将其保存到表中后放置在循环之外,但似乎不是那样。请参考下面的代码。
https://jsfiddle.net/cnymd6x5/
解决方法
appendChild
从它所在的位置(如果它在任何地方)删除一个元素,然后将它放在您要附加它的对象的末尾。
所以:
- 将 TR 放在表的末尾(假设它已在循环之前创建并且不在 DOM 中的任何位置)。
- 从表的末尾移除 TR,然后将其放回原处
- 从表的末尾移除 TR,然后将其放回原处
- 从表的末尾移除 TR,然后将其放回原处
- 从表的末尾移除 TR,然后将其放回原处
- 从表的末尾移除 TR,然后将其放回原处
- 从表的末尾移除 TR,然后将其放回原处
... 然后循环结束。