一个很奇怪的问题,关于js的函数

shenxian5 2010-01-27 09:56:49
如下:
<input id="AAA" name="AAA" value="100" type="text" />
<script src="123.js"></script>
<script>chk();</script>



123.js
function chk(){var mp=document.getElementById("AAA").value;
//……
}



问题就是,如果这样在加载html的时候自动加载chk这个函数,会报错,提示找不到对象,也就是AAA,但是如果在函数的第一行加一个alert,随便alert什么,就能正常运行,这个是啥情况?
...全文
147 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenxian5 2010-01-27
  • 打赏
  • 举报
回复
好像可以的啊?我刚试过了。。
草根醉秋意 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shenxian5 的回复:]
找到了一个解决办法

JScript codefunction openchk(){
chk();
}var oTime= window.setTimeout("openchk()",3000);//延时3秒执行
[/Quote]

楼主你这个方法不行,如果3秒后dom还没加载一样会出错
window.onload = function(){
openchk();
}
shenxian5 2010-01-27
  • 打赏
  • 举报
回复
找到了一个解决办法

function openchk(){ 
chk();
}
var oTime = window.setTimeout("openchk()",3000); //延时3秒执行
shenxian5 2010-01-27
  • 打赏
  • 举报
回复
前面页面的表单部分是用ajax取的,有可能是这个问题。。

但是修改为body onload似乎还是报错。。傻眼

再试试看看,。感谢大家的回复!
nabber 2010-01-27
  • 打赏
  • 举报
回复
需要在页面加载时执行的script最好在onload事件中或者body标记内执行。


html是顺序加载页面的,在执行script的时候,document.getElementById("AAA")要取得的aaa的element还没有加载完成,所以才会出现这样的问题。
草根醉秋意 2010-01-27
  • 打赏
  • 举报
回复
文档还没有加载就访问是找不到元素的,在window.onload里面执行那个方法
q107770540 2010-01-27
  • 打赏
  • 举报
回复
页面有没有使用母版页之类的东西?
确定页面显示后 INPUT的ID是AAA
你可在页面显示出来后 使用查看源码 来查看此时INPUT的ID
kksss 2010-01-27
  • 打赏
  • 举报
回复
<script src="123.js"></script>
外部引用加载需要时间无ALERT未加载完就直接运行了chk();

alert暂停了chk();运行

可以<body onload="chk()">执行

shenxian5 2010-01-27
  • 打赏
  • 举报
回复
另外一个就是,如果修改成非自动加载,而是button onclick的形式,也会正常运行
呼吸先生 2010-01-27
  • 打赏
  • 举报
回复
mark

87,955

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧