Javascript 无法将getElementByID对象传递到Chrome上的外部JS文件

Javascript 无法将getElementByID对象传递到Chrome上的外部JS文件,javascript,google-chrome,external,Javascript,Google Chrome,External,我创建了一个名为formValueOperator.JS的简单JS文件,其中包含以下函数: function setValue(type, obj, value){ if(type == 'text') { obj.value = value; } <HTML> <HEAD> <title>Simple Test</title> <script type="text/javascript" src="f

我创建了一个名为formValueOperator.JS的简单JS文件,其中包含以下函数:

function setValue(type, obj, value){
if(type == 'text')
{
    obj.value = value;
}
<HTML>
   <HEAD>
      <title>Simple Test</title>
      <script type="text/javascript" src="formValueOperator.js"></script>
      <script type="text/javascript">
         function setInitValue(){
              var element_order_id = document.getElementById("order_id");
              setValue('text', element_order_id, 'aaa');
         }
      </script>
   </HEAD>
   <BODY>
         <FORM name="myform" method="post">
              <input type="text" size=20 id="order_id" name="order_id">
         </FORM>
         <script type="text/javascript">
              setInitValue();
         </script>
   </BODY>
</HTML>
和另一个调用此函数的HTML页面:

function setValue(type, obj, value){
if(type == 'text')
{
    obj.value = value;
}
<HTML>
   <HEAD>
      <title>Simple Test</title>
      <script type="text/javascript" src="formValueOperator.js"></script>
      <script type="text/javascript">
         function setInitValue(){
              var element_order_id = document.getElementById("order_id");
              setValue('text', element_order_id, 'aaa');
         }
      </script>
   </HEAD>
   <BODY>
         <FORM name="myform" method="post">
              <input type="text" size=20 id="order_id" name="order_id">
         </FORM>
         <script type="text/javascript">
              setInitValue();
         </script>
   </BODY>
</HTML>

简单测试
函数setInitValue(){
var element_order_id=document.getElementById(“order_id”);
setValue('text',元素顺序id',aaa');
}
setInitValue();
这是一个相当简单的操作:

运行HTML-->调用函数setInitValue()-->将“aaa”放入文本框

在FireFox(7.0.1)上,一切都能完美运行。然而,当我试图在Chrome(14.0.835.202)上运行这个程序时,它根本不起作用

然后,我通过从formValueOperator.js移动整个setValue函数来测试代码,并将其粘贴到HTML页面中。令人惊讶的是,它成功了

Chrome如何将getElementByID对象传递给外部JS文件,这肯定有点可疑


有人能帮我做这个吗

这与启动
setInitValue()
方法的时间有关

当您将方法移出JS文件并移动到文档主体中时,您可能会将方法的执行延迟几毫秒,从而给您选择的元素加载时间

当所有内容都已完成加载时,使用的事件执行代码

$(document).ready(function(){
  setInitValue();
 }
);

以这种方式尝试,延迟方法执行,直到加载网页:

<FORM name="myform" method="post">
   <input type="text" size=20 id="order_id" name="order_id" />
</FORM>

<script type="text/javascript">
   window.onload = function() {
      setInitValue();
  };
</script>

window.onload=函数(){
setInitValue();
};

HTML中没有输入的结束标记,HTML中也不存在自动结束标记。@Jamie Dixon:真的吗?但是这个呢?您显示的页面显示:“在HTML中,标记没有结束标记。在XHTML中,标记必须正确关闭,就像这样。”@Jamie Dixon:没错。谢谢你的警告:)我会更正我的答案。谢谢你的快速回复。然而,经过测试,它在Chrome上仍然不起作用(但在FireFox上起作用)。在你最初的问题中,当你说“它不起作用”时,你的确切意思是什么?你得到了什么错误?没有显示错误,只是一个空白文本框。但当我在FireFox上运行此页面时,它在文本框中显示“aaa”。它是否正在查找您试图选择的元素?抛出一个带有元素\u order\u id的alert或console.log,看看它是否未定义。FireFox的回答似乎是“aaa”值,而Chrome根本没有回应。