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

时间:2011-10-11 09:12:04

标签: javascript google-chrome external

我创建了一个名为 formValueOperator.js 的简单JS文件,其中包含此功能:

function setValue(type, obj, value){
if(type == 'text')
{
    obj.value = value;
}

和另一个调用此函数的HTML页面:

<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 - &gt; call function setInitValue() - &gt;把'aaa'放在文本框中。

一切都在FireFox(7.0.1)上完美运行。但是,当我尝试在Chrome(14.0.835.202)上运行它时,它根本不起作用。

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

关于Chrome如何将getElementByID对象传递给外部JS文件,一定有些可疑。

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

这与setInitValue()方法被触发的时间有关。

当您将方法移到JS文件之外并进入文档正文时,您可能会延迟执行该方法几毫秒,从而为您选择加载时间。

使用jQueryready事件在所有内容加载完成后执行代码。

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

答案 1 :(得分:0)

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

<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>