Javascript:按ID更新元素?

时间:2013-06-18 06:46:51

标签: javascript html forms google-chrome google-chrome-extension

我正在尝试通过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>

我正在尝试通过执行以下“

来更新”firstname“的值
document.getElementById("firstName").value = "UPDATED";

并且它有效,但是当我在我的实际网站上尝试它时,即使它存在,我也会得到null元素。整个表格虽然在iframe里面。

5 个答案:

答案 0 :(得分:2)

您无法使用外部的脚本访问iframe的内容 - 这会引入XSS漏洞。您需要以某种方式在iframe中加载该脚本或完全避免使用iframe。请查看same origin policy上的此页面,了解有关原因无效的信息。

答案 1 :(得分:1)

      iframe =  getElementByTagName('iframe').contentWindow.document
      iframe.getElementById('firstName').value = 'UPDATED'

答案 2 :(得分:0)

当您调用iframe时,您还会调用另一个HTML页面。 您必须在此iframe的目标页面中执行脚本编写。

答案 3 :(得分:0)

确保父网页和iframe网页的网址相同,然后就可以了。这是访问内部表单的父级的JS。

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

希望它有所帮助 :)

答案 4 :(得分:0)

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

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

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

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

访问iframe中的表单元素:

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

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