1
SilentDepth 2017-09-12 00:19:54 +08:00 2
楼主似乎没有把问题说明白。如果我理解的没错的话,楼主是想问:为什么第二个 console.log 紧跟在 thead 赋值之后,理应输出一个空的 <tr>(吐槽:为什么生成的是 <tr>,变量名却写的是 thead ),而实际上连再之后 appendChild 的几个 <th> 也打印出来了。
从 JS 执行的角度来说,第二个 console.log 确实应该输出 <tr> 本身。但我们看的并不是 JS 真正的执行结果,而是 Console 这个东西的显示结果。楼主可以看一下这个回答: https://stackoverflow.com/a/23392650 简单来说,console 并不存在于 JS 规范中,它是 JS 运行环境(比如浏览器)定义的东西。出于性能上的考虑,它可能不会与 JS 代码「严格同步」地工作(至少不会同步地渲染)。楼主提到的情况,是 Console 在打印 thead 的值时 JS 程序已经执行到了 function 末尾,由于 thead 在这里是一个引用,于是其子节点也一并被输出出来来了。如果你尝试在 for 循环开始之前打一个断点,可以看到输出的只是一个空的 <tr>。 |
2
autoxbc 2017-09-12 02:44:53 +08:00
转换为基本类型,使其静态化再输出
console.info(thead.outerHTML) |
3
jmyz0455 OP @SilentDepth 非常感谢,我的确没有把问题说清楚,我以后会注意说明输出代码的期望值和实际值的。你的理解也没错,我就是这个意思。那个变量名其实是因为,这是我在别的代码块里发现了这个问题,然后我把这一块迁出来 jsfiddle 忘了改变量名:)
现在搞明白了谢谢。 |