Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 如何获取iframe元素?_Javascript_Jquery_Html_Iframe_Parent Child - Fatal编程技术网

Javascript 如何获取iframe元素?

Javascript 如何获取iframe元素?,javascript,jquery,html,iframe,parent-child,Javascript,Jquery,Html,Iframe,Parent Child,这是main.html <body> <p id="test">0123456798</p> <script type="text/javascript"></script> </body> document.getElementById('frame').contentWindow.document.getElementById('test').innerHtml='abcdefgh'; 这是fram

这是
main.html

<body>
    <p id="test">0123456798</p>
    <script type="text/javascript"></script>
</body>

document.getElementById('frame').contentWindow.document.getElementById('test').innerHtml='abcdefgh';
这是
frame.html

<body>
    <p id="test">0123456798</p>
    <script type="text/javascript"></script>
</body>

0123456798

错误:未捕获类型错误:无法将属性“innerHTML”设置为null

为什么不工作,以及如何更改
id=“test”
text

使用
setTimeout()
延迟脚本。
iframe
需要时间加载

<iframe id="frame" src="frame.html"></iframe>
<script type="text/javascript">
setTimeout(function(){
  document.getElementById('frame').contentWindow.document.getElementById('test').innerHTML = 'abcdefgh';
},800);
</script> 

setTimeout(函数(){
document.getElementById('frame').contentWindow.document.getElementById('test').innerHTML='abcdefgh';
},800);

请注意
innerHTML()

上的大写字母,您好,这里有一个解决方案

setTimeout(function(){ var iframe = document.getElementById('frame'); console.log(iframe); }); setTimeout(函数(){ var iframe=document.getElementById('frame'); 控制台日志(iframe); });
希望对您有所帮助

我想您不需要使用
contentWindow.document
。代码应该类似于
document.getElementById('frame').getElementById('test').innerHtml
TypeError:document.getElementById(…).getElementById不是一个函数。您应该在控制台中检查
document.getElementById('frame')
的值是否有值。查看Hmmmm,获得相同的结果,从而获得更长的延迟。。。也许800毫秒还不够。这取决于iframe的内容。我还尝试了延迟10秒^ ^ ^ ^它可以工作。我已经设置了3000毫秒的延迟,以便您有时间注意HTML的更改。。。但它能用800。是的,谢谢你,终于起作用了。bcs我忘了把文件发到我的服务器上了,我正在我的电脑上测试它。