Iframe DOM问题:访问表单字段时未定义的值

时间:2011-06-06 22:44:20

标签: javascript html dom iframe

我一直在调试一些通常看起来很容易修复的JavaScript。我尝试了几种方法,一些是基于使用表单访问字段,另一种方法是使用getElementById。我也搞砸了在几个地方留下/取出名字属性。

在iframe文件中,asdf_iframe.html:

    <form id="asdf_form" name="asdf_form" action="asdf_iframe.html">
      <input type="hidden" id="field_1">
    </form>

在基本文件中:

    <iframe id="asdf_iframe" name="asdf_iframe" src="asdf_iframe.html" height="50" width="50">
    </iframe>

    <script>
      function get_iframe_doc(_window,frame_id) {
        var frame_elem = _window.document.getElementById(frame_id);
        if(frame_elem.contentDocument)
          return frame_elem.contentDocument;
        else
          return frame_elem.contentWindow.document;
      }
    </script>

    <script>
      var asdf_iframe_doc = get_iframe_doc(this,"asdf_iframe"); //Profiler says this is defined
      asdf_iframe_doc.getElementById("field_1").value = 1234;   // Error Here: not defined
    </script>

我尝试了很多不同的访问field_1的方法,但没有成功。

2 个答案:

答案 0 :(得分:3)

对我而言,似乎你在打电话

asdf_iframe_doc.getElementById("field_1").value = 1234;

太早了。您需要在iframe完成加载其网址后调用该方法。

这是一次尝试。

window.onload = function() {
    var iframe = window.frames["asdf_iframe"];
    iframe.onload = function() {
        iframe.document.getElementById('field_1').value = 1234;
    }
}

答案 1 :(得分:1)

您的脚本运行得太快了。试试这个。

<script>
window.onload = function() {
  var asdf_iframe_doc = get_iframe_doc(this,"asdf_iframe");
  asdf_iframe_doc.getElementById("field_1").value = 1234;
}
</script>