我创建了一个名为 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文件,一定有些可疑。
有人可以帮我这个吗?
答案 0 :(得分:0)
这与setInitValue()
方法被触发的时间有关。
当您将方法移到JS文件之外并进入文档正文时,您可能会延迟执行该方法几毫秒,从而为您选择加载时间。
使用jQuery的ready事件在所有内容加载完成后执行代码。
$(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>