简单描述:
在HTML body部分中的Js会在页面加载的时候被执行。 在HTML head部分中的Js会在被调用的时候才执行。
区别:
在head中的Js,只加载不执行。只有事件触发的情况下才执行。
在body中的Js,在加载的事件就开始执行了。无需事件触发和调用
实例:
<!DOCTYPE html> <html> <head> <meta charset ="utf-8"> <title>Js</title> <script> function showDate(){ document.getElementById('demo').innerHTML = Date(); } function changeText(id){ id.innerHTML = 'August'; } </script> </head> <body> <h1 onclick ="changeText(this)">July</h1><!--事件触发,所以其对应的Js语句放在head中--> <button onclick ="showDate()">现在的时间是?</button><!--事件触发,所以其对应的Js语句放在head中--> <button id ="myBtn">Septemper</button><!--这不是事件触发,所有其对应的Js语句放在body中--> <script> document.getElementById("myBtn").onclick = function(){changeMonth()}; function changeMonth(){ document.getElementById('demo').innerHTML = 'October'; } </script> <p id ="demo"></p> </body> </html>注:
也可以把事件触发对应的Js语句放在body中,但是不能把没有事件触发的Js语句 在head中。由于浏览器是按顺序解析html,所以无事件触发的Js在body的语句应放在你想要执行 语句的后面。
如下文:将无事件触发的Js语句放在button上面也会出现问题。由于浏览器按顺序解析,先会解析button上面的Js语句(显然此时浏览器布知道MyBtn是什么,所以不会做出反应),然后再解析button的id。
<!DOCTYPE html> <html> <head> <meta charset ="utf-8"> <title>Js</title> </head> <body> <script> document.getElementById("myBtn").onclick = function(){changeMonth()}; function changeMonth(){ document.getElementById('demo').innerHTML = 'October'; } </script> < button id = "myBtn" > Septemper < / button > <p id ="demo"></p> </body> </html>