假设我修改了第1行的HTML DOM。我可以确定JavaScript的第2行将使用第1行制定的DOM修改吗?
这是唯一可以解释我在表格上遇到的一些错误行为的解释。前一行应该更新DOM,但有时DOM不会在下一行时更新。当我走得慢的时候,事情似乎工作正常。
答案 0 :(得分:1)
是的,Javascript DOM修改将按顺序发生,除非您正在等待异步AJAX调用返回。直到第一条指令完成后才会发生下一条指令。但请显示您的代码!
答案 1 :(得分:1)
立即更新DOM元素上的特定属性,并且应该在随后读取该属性时保留。
如果您依靠该更改在DOM中传播,则可能会非常棘手。例如,例如更改元素的大小并期望兄弟元素报告新的偏移位置 - 后者可能可能不会发生,直到堆栈展开。我实际上并不知道确切的规则,但你必须要小心 - 它有时是依赖于浏览器的行为。而且可怕的是,有时会发出警报以帮助调试这使得元素立即“实现”他们的新布局。然后你把警报拿出去,然后再回到马车行为。
因此,如果你肯定DOM更改没有立即产生影响,那么有时要做的是使用回调函数和时间值0调用“setTimeout”。当计时器回调完成时,你可以完成后续处理。 YMMV