javascript onload事件为什么会被覆盖而只执行最后一行的window.load

我把<script....></script>放在HTML文档的head头部开始位置在单独的js文件中写有一个这样的函数:window.onload=function()... 我把<script....></script> 放在HTML文档的head头部开始位置 在单独的js文件中写有一个这样的函数:

window.onload=function()
{
inseat();
}
document.getElementById("seat1").onclick=function(i){jingbao(i);};
为什么这时候onclick事件不能用?
window.onload=function()
{
inseat();
document.getElementById("seat1").onclick=function(i){jingbao(i);};
}

为什么这样单击事件可以执行呢?
展开
 我来答
aobao22
2013-08-22 · TA获得超过119个赞
知道小有建树答主
回答量:124
采纳率:100%
帮助的人:123万
展开全部
你放在window.onload里面是指页面加载完后执行,
如果没放在里面,你的第一种情况,根本没有Dom seat1节点
document.getElementById("seat1")没有,
如果不想放在onload里面,你可以把document.getElementById("seat1").onclick=function(i){jingbao(i);};
放在最下面,紧挨着</body>,这样能执行。
注意添加事件有兼容性问题,Onload也有时候不能全部载完的。
追问
我想把HTML和JS完全分离。
我是这么理解的:执行HTML文档后开始执行JS是吗?然后window.load事件开始进行了是吗?接着document.getElementById("seat1").onclick=function(i){jingbao(i);};HTML文档载入完已经可以获取ID了不是吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尧__不可及
2013-08-22 · 超过24用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:46万
展开全部

如果你写在了文档最开始,因为

document.getElementById("seat1").onclick=function(i){jingbao(i);};

上面这句你没有写在方法内,那么页面在打开的时候就会执行这一步,而此时页面还没有seat1元素,seat1元素在<head>之后.因此也就没有给onclick事件添加对应的方法.你点击的时候自然没反应啦,你用你的浏览器F12debug一下就可以清楚的看到出错在哪里了

更多追问追答
追问
什么样形式才是写在方法内?我还么看完整本书自学的。
追答
//
 function funcName(){
 //加在这对大括号中间的就是方法体内
}
//这里是方法体外
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暴躁的码农
2013-08-22 · 无暴躁,不编程,我爱暴躁,我爱编程
暴躁的码农
采纳数:12 获赞数:20

向TA提问 私信TA
展开全部
一个页面只有一个 onload事件
追问
我是这么理解的:执行HTML文档后开始执行JS是吗?然后window.load事件开始进行了是吗?接着document.getElementById("seat1").onclick=function(i){jingbao(i);};HTML文档载入完已经可以获取ID了不是吗?
追答
哦,不好意思 刚才没看清除你问的。
是这样的。这个是顺序执行的,从上往下。onload是页面渲染完后执行的。
所以第一个 你的getElementById执行的时候页面没渲染完,获取不到值。
第二个是在onload里面,是页面渲染完后再执行的getElementById。能获取到相应对象了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式