# 二、 js写在哪
1. 行内:标签的行为属性内(如onclick,ondblclick,onmousedown,...)
- 不会自动执行,必须通过行为触发
- 结构和行为没有分离,不方便标签之间功能的复用和维护(不建议使用)
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
height: 100px;width: 100px;background-color: pink;
}
</style>
</head>
<body>
<!-- 点击盒子触发事件 -->
<div class="box" onclick="alert('hello world')"></div>
</body>
</html>
```
2. 内部:script标签内
- 可以不需要通过行为触发,会自动执行
- 结构和行为没有完全分离,不方便多个页面之间功能的复用和维护
- 优先写在body下方,且body的外部,html内部
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.box{width: 100px;height: 100px;background: pink;}
</style>
</head>
<body>
<div class="box"></div>
</body>
<script>
alert('你好,世界')
</script>
</html>
```
3. 外部:js文件内,在html中使用script标签的src属性引入
- 可以不需要通过行为触发,会自动执行
- 结构和行为分离,方便功能的复用和维护(建议使用)
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
height: 100px;width: 100px;background-color: pink;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
<!-- 结构和样式相分离,src引出文件所在路径 -->
<script src="../js/index.js"></script>
</html>
```
4. 执行顺序
- 先写的先执行,后写的后执行,需要行为触发的,必须在行为触发后才行为
5. 注意
- 错误写法:既有内部又有外部时,合二为一,只使用一个script标签,大错特错!!!