Javascript JS getElementById仅在inspect元素之后可见
我有一个奇怪的行为,我有一个基于存储在数据库中的HTML在主屏幕中呈现的代码 如果我在Chrome inspector的控制台中执行Javascript JS getElementById仅在inspect元素之后可见,javascript,Javascript,我有一个奇怪的行为,我有一个基于存储在数据库中的HTML在主屏幕中呈现的代码 如果我在Chrome inspector的控制台中执行getElementById('myGivenId'),我会得到null。然而,当我单击inspect元素(屏幕上的任何位置)并再次尝试获取元素后,它出现了 如何在默认情况下使元素“可查找” 守则第2节: <div class="hidden popupbox" data-contentid="666"> <iframe width="16
getElementById('myGivenId')
,我会得到null
。然而,当我单击inspect元素(屏幕上的任何位置)并再次尝试获取元素后,它出现了
如何在默认情况下使元素“可查找”
守则第2节:
<div class="hidden popupbox" data-contentid="666">
<iframe width="16" height="9" src="//www.youtube.com/embed/...modestbranding=1" autohide="1"
frameborder="0" allowfullscreen="" class="video" id="myGivenId"></iframe>
</div>
执行
document.getElementById('myGivenId')
有几件事会导致这种情况:
- 无效HTML,某些标记未关闭或类似
- 重复ID
- 您试图通过ID获取的元素可能是由脚本动态创建的
- 他们是否有显示的css属性:无
在单击并显示它们之前?如果是这样,它们将不在DOM中,您无法使用getElementById获取它们
如果是这种情况,试着用Visibility:hidden替换它,如果这对你的应用没有问题的话
或者在类更改后添加getElementById以显示内容
但是更多的信息/代码片段将非常有用当iframe的src来自另一个域时,您无法从iframe内部获取元素,因为由于同源策略,您将无法访问iframe中的内容
如果它来自同一来源,您可以使用
contentWindow
获取元素,我也遇到了同样的问题
我试图检查验证字段是否未定义或是否有文本值。
关键是,如果我在控制台中执行不同的操作,我会得到相同的结果,但是如果我在浏览器中检查元素,它看起来正在刷新某些内容,我会得到正确的值。如果你检查图片,我得到了不同的值,而不涉及工作流应用程序中的任何内容
我认为,为了真正帮助您,我们可能需要您的完整页面。因为这是有意义的。我也有同样的问题,通过react加载iframe,我无法仅在检查后获取元素。如果不复制id,则应通过“document.getElementById('myGivenId')”获取对象。因为您只访问iframe,而不是在其元素内部。如果您需要进一步尝试,只需删除“隐藏”CSS类并尝试。他们不会尝试进入iframe内部,
id=“myGivenId”
位于iframe
元素上,而该元素本身就是文档的一部分,因此无需同源策略干预即可访问。