Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态DOM元素不可访问?_Javascript - Fatal编程技术网

Javascript 动态DOM元素不可访问?

Javascript 动态DOM元素不可访问?,javascript,Javascript,通过使用调试检查器,我可以看到ID为Foo的DOM元素 这个DOM元素是由我无权访问的脚本动态插入的 因此,在查看->源代码时无法看到它 当我尝试使用访问元素时 document.getElementById('Foo'),它返回一个空的b.c.它找不到它 在调试控制台中也验证了这一点 是否可以获取动态插入的元素 我请求b.c.我想删除节点。是的,您可以: function addElement() { var foo = document.createElement('p');

通过使用调试检查器,我可以看到ID为Foo的DOM元素

这个DOM元素是由我无权访问的脚本动态插入的

因此,在查看->源代码时无法看到它

当我尝试使用访问元素时

document.getElementById('Foo')
,它返回一个空的b.c.它找不到它

在调试控制台中也验证了这一点

是否可以获取动态插入的元素

我请求b.c.我想删除节点。

是的,您可以:

function addElement() {
    var foo = document.createElement('p');
    foo.id = "bar";
    document.body.appendChild(foo);
}
function getElement() {
    alert(document.getElementById('bar'));
}    

addElement();
getElement();
另见

您的示例不起作用的原因很难说,因为您没有提供任何细节

猜测一下,您看到的元素位于另一个文档中,嵌入在iframe中,在这种情况下,您必须在调用
getElementById
之前对其执行操作。当然,这要视情况而定。

可能您试图在创建元素之前访问它。否,我在页面完全加载后使用了控制台调试器。正如我所建议的,它可能位于iframe中的另一个文档中。iframe位于不同的来源,因此您不能(因为广告是他们提供服务的“报酬”,即使您可以,您也不应该)。大多数DOM检查器将iframe中的嵌套文档显示为DOM的一部分。它们仍然是不同的文档。我在DOM检查器中查看了它。我猜iFrame中的所有内容都是只读的,受浏览器保护?正如我在回答中所说,它受同源策略保护。因此,它的大部分是不可访问的(不是只读的,完全不可访问)。只写几个部分。(这些部分不包括任何元素节点,因为它们都是从无法读取的内容中下降的)。