为什么元素在我的div容器消失?



我有一个关于处理div容器内元素时浏览器行为的问题。我有一个Iframe,用于向服务器发出请求以运行PHP文件,而父页面保持动态。当服务器将结果返回给子框架时,父页面向子框架发出的请求决定了父页面上的某些元素最终会发生什么。我已经测试过了,除了一个明显的小故障外,一切都很好。如果有人在主页上调用一个函数,试图读取div容器内的元素,而子框架正在更改同一div容器内的任何元素,则程序会给出一个空错误。当我用调试器检查div容器的元素时,该特定div容器中的所有元素(总共14个)都消失了。我确信我可以通过首先查询一个随机元素来解决这个问题,看看它是否存在,如果不存在,在一秒钟后,当子框架完成父页面时,再放一个回调函数。但我很好奇,为什么所有的元素在那个特定的div容器都消失在那个确切的时刻在第一,因为子框架只操纵div内的5个元素,和父请求正在寻找一个完全不同的元素,没有被操纵的子框架。假设对div容器内的元素进行更改强制重写该div内的所有元素,我是否正确?文档主体中的所有其他div容器元素保持不变,只有一个div被更改。这不是确切的代码(太多的帖子),但一个例子。

// Parent
document.getElementById("heading").innerHTML = "Where did you go?";
// Child Frame
parent.document.getElementById("pic").src = "anotherpic.jpg";
<div id ="something">
<P id = "heading">blah blah blah</p>
<img id = "pic" src = "picture.jpg">
<p id = "picname">Picture Name</p>
</div>

如果子元素先运行,并且父元素试图读取元素,而子元素仍在对div中的元素进行更改,则当我在调试器中查找它们时,所有元素都会消失。任何关于这种行为的见解都是值得赞赏的。谢谢。(希望这不是一个愚蠢的问题。lol)

请注意,没有"同时"这回事。在这里。innerHTMLgetElementById同步工作

即使你不正确地使用了innerHTML(我知道不是这种情况)。重写父组件——没有"中间状态"你可以用函数来访问它,注意到在某个时刻没有元素。所以我想从其他地方寻找背后的原因。

。Iframe内容每次修改父元素两次,第一次使父元素为空。

您试过使用:目标。addEventListener(type, listener [, options]);

代替:getElementById

?好像有东西被覆盖了。

最新更新