页面上通常会有三个标签,html,head,body,这三个之间的关系是,html包含整个页面代码,head主要用于引入一些js,css文件,body用来包含页面代码和js代码
浏览器加载页面的顺序为,先加载head,如果碰到script标签的话,会判断是引入外部js文件还是js代码,如果是文件会开始下载外部文件,如果是代码则html页面加载会暂停,此时javascript引擎开始执行代码,等代码执行完了继续加载页面,等head标签里面的内容都加载完了之后 开始加载body标签的内容,如果body里面遇到script标签的话,是文件就下载,是代码又会暂停加载页面,转而让引擎执行js代码,等js代码执行完毕之后才会继续加载页面这种。
我今天就遇到这种情况,我把js代码写在了head标签里面,js页面有操作table表格的代码,但是一直都取不到表格的元素,原因就是因为head里面的js代码执行的时候,页面还没有加载完成,表格也没有加载出来,导致今天的问题。
一般的作法是把有js代码的script标签放在body的靠后位置,或者要是为了body里面结构比较清晰,也可以放在head里面,但是js代码放在window.onload事件里面,这样也可以