innerHTML、<form> 和 Firefox

Posted

技术标签:

【中文标题】innerHTML、<form> 和 Firefox【英文标题】:innerHTML, <form> and Firefox 【发布时间】:2012-01-17 07:59:07 【问题描述】:

我在使用 Firefox 时遇到问题。我所做的工作适用于 IE,但不适用于 Firefox。

我使用innerhtmldivwindow.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 一个divwindow.parent 的表格?

编辑: 它们具有相同的 ID,但一个在主页中,另一个在 iframe 中,因此它们不一样。我找到了办法:

window.parent.document.getElementById('DIV_page').innerHTML = '' ;
window.parent.document.getElementById('DIV_page').appendChild(document.getElemen‌​tById('DIV_page'));

但是有一个但是用IE和Opera,这个形式的&lt;input type="text"&gt;有一个白色的背景和白色的彩色文本,所以我们看不到这个&lt;input&gt;中的文本

【问题讨论】:

同一页面上不能有两个具有相同 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功能

innerhtml 提交按钮

使用 document.innerHTML 在 div 标签内动态生成表单

电力项目pub.js实现替换form表单的innerHTML

innerHTML和innerText区分

innerHTML和innerText