innerHTML、<form> 和 Firefox
Posted
技术标签:
【中文标题】innerHTML、<form> 和 Firefox【英文标题】:innerHTML, <form> and Firefox 【发布时间】:2012-01-17 07:59:07 【问题描述】:我在使用 Firefox 时遇到问题。我所做的工作适用于 IE,但不适用于 Firefox。
我使用innerhtml
将div
与window.parent
中的表单一起放入:
window.parent.getElementById('DIV_page').innerHTML = getElementById('DIV_page').innerHTML ;
在这个div
中,form
看起来像:
<form method="post" style="padding:0px;margin:0px;" name="f_bg_page" id="f_bg_page" target="If_menulb" action="if_menulb.php">
<input type="hidden" name="p" value="455">
<input type="hidden" name="w" value="prefs_lb">
我怎样才能innerHTML
一个div
与window.parent
的表格?
编辑: 它们具有相同的 ID,但一个在主页中,另一个在 iframe 中,因此它们不一样。我找到了办法:
window.parent.document.getElementById('DIV_page').innerHTML = '' ;
window.parent.document.getElementById('DIV_page').appendChild(document.getElementById('DIV_page'));
但是有一个但是用IE和Opera,这个形式的<input type="text">
有一个白色的背景和白色的彩色文本,所以我们看不到这个<input>
中的文本
【问题讨论】:
同一页面上不能有两个具有相同 ID 的元素。可能是这样的 @Pekka:可以,但当然不应该。 你遇到了什么 javascript 错误? window.parent 表示您的 javascript 代码在 iframe 中?父窗口和iframe是否属于同一个域?如果这两个不属于同一个域,可能就是问题所在。您不需要“document.getElementById("div_page").innerHTML" 而不是“getElementById("div_page").innerHTML”吗? 您可以使用 Firebug firefox 扩展来查看其错误控制台中是否显示任何错误。它将帮助您找到错误的确切原因。 【参考方案1】:Pekka 的评论在这种情况下是正确的。因为您有两个具有相同 id 的元素,所以 javascript 不知道选择哪一个。我想这种情况在每个浏览器中以不同的方式实现。有些人会先找到它,有些人会做其他事情。
给有问题的元素提供不同的 id,你会发现你的问题已经解决了。
【讨论】:
它们的ID相同,但一个在主页,另一个在iframe中,所以它们不一样。我找到了一种方法:window.parent.document.getElementById('DIV_page').innerHTML = '' ; window.parent.document.getElementById('DIV_page').appendChild(document.getElementById('DIV_page'));
,但是有一个但是在 IE 和 Opera 中,一个
您的 javascript 仍然需要区分具有相同 id 的两个元素。它永远无法可靠地工作。以上是关于innerHTML、<form> 和 Firefox的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 怎么实现JavaScript中的innerHTML功能
使用 document.innerHTML 在 div 标签内动态生成表单