我一直在调试一些通常看起来很容易修复的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的方法,但没有成功。
答案 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>