0

我正在尝试通过 ID 获取元素并更新它,但我似乎遇到了麻烦,因为我对 javascript 还很陌生。这是我的表格:

<div class="formRow billingForm">
    <div class="formLabel">First Name</div>
    <div class="formField">
      <input type="text" class="formTextField firstName" value="" name="firstName" maxlength="35" id="firstName">
    </div>
    <div class="formExtraInfo formExtraInfoTall">Enter your name.</div>
  </div>

我正在尝试通过执行以下操作来更新“名字”的值“

document.getElementById("firstName").value = "UPDATED";

它可以工作,但是当我在我的实际站点上尝试它时,即使它在那里,我也会得到 null 元素。整个表单虽然在 iframe 内。

4

5 回答 5

2

您无法使用外部脚本访问 iframe 的内容——这会引入 XSS 漏洞。您需要以某种方式在 iframe 中加载该脚本或完全避免使用 iframe。请查看有关同源政策的此页面,以获取有关为什么不起作用的信息。

于 2013-06-18T06:50:04.273 回答
1

尝试

      iframe =  getElementByTagName('iframe').contentWindow.document
      iframe.getElementById('firstName').value = 'UPDATED'
于 2013-06-18T07:02:30.627 回答
0

确保父页面和 iframe 页面的域 URL相同才有可能。这是访问表单里面的父级的JS。

var iframe = document.getElementById('iframeId');
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
innerDoc.getElementById("firstName").value = "UPDATED";

希望能帮助到你 :)

于 2013-06-18T06:57:46.340 回答
0

如果表单在 iframe 内,并且您正在从 iframe 的父级更新表单元素的值,请使用以下内容:

将值分配给表单名称,如下所示:

<iframe src="formPage.html" onload="loaded()" name="myFrame" />

并将 id 赋予表单元素,例如“myForm”

访问 iframe 内的表单元素:

myFrame.document.getElementById("myForm").firstName.value = 'UPDATED';

还要确保您的脚本在 iframe 加载后运行。您的 iframe 标记有一个 onload 事件,您可以使用该事件来确定何时加载框架内的页面。

于 2013-06-18T07:00:55.423 回答
0

当你调用一个 iframe 时,你也调用了另一个 HTML 页面。您必须在此 iframe 的目标页面中编写脚本。

于 2013-06-18T06:50:28.240 回答