JavaScript学习1
一、JavaScript应该放在什么位置?
1、行间JS,不推荐使用
优势:直接作用于当前元素,直观
劣势:
1)复用率低(无复用性)。
2)结构分离不够清晰(html、CSS 、JS)。
3)维护不方便,后期修改不方便
代码实现如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#box{
width: 300px;
height: 300px;
background: red;
}
</style>
</head>
<body>
<!--行间js-->
<div id="box" onclick="alert('这里是红色警告!')"></div>
<!--
onclick - 点击
alert - 弹出
-->
</body>
</html>
执行结果如下:

2、内部JS:一般在学习时候使用。
优点:
1)结构分离清晰
2)可以复用(只存在于当前页面)
3)较利于维护和修改
劣势:
1)多页面之间无法复用。
2)多页面之间的维护较麻烦。
<script> document.querySelector('#box1').onclick = function () { alert(1); } </script>
代码实现:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#box1{
width: 200px;
height: 200px;
background-color: green;
}
</style>
</head>
<body>
<div id="box1"></div>
<!--内部js-->
<script>
document.querySelector('#box1').onclick = function () {
alert(1);
}
</script>
</body>
</html>
执行结果:

3、外部JS:推荐在工作中使用。

main.js文件内容如下:
document.querySelector('#box1').onclick = function () {
alert(1);
}
代码实现如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#box1{
width: 200px;
height: 200px;
background-color: green;
}
</style>
</head>
<body>
<div id="box1"></div>
<!--外部js-->
<script src="studyjs/main.js"></script>
</body>
</html>
执行效果:

优势:
1)代码分离彻底
2)利于后期维护修改
3)不同页面之间也可以复用
劣势:
增加请求数量
注意:
<script src="studyjs/main.js">
//如果引用了外部的js,那么这里的js的内容放这里不会被执行,如果在当前页面写入js代码需要单独使用
</script>

script标签属性:type="text/javascript"
注意:type属性表示内同类型(MIME类型,学习网址:https://www.runoob.com/http/mime-types.html)
调试:
可以使用console.log(要打印的内容或元素),确认内容是否正确。
console.log(document.getElementById('btn'));
查看console.log内容的步骤:
1)F12》控制台
2)鼠标右键检查》控制台

获取元素的两种方式:
获取元素的方式一:通过Id
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
button{
width: 100px;
height: 50px;
text-align: center;
font: 22px/35px"微软雅黑";
margin:0;
padding: 0;
}
</style>
</head>
<body>
<button id="btn">按钮</button>
<script>
//获取元素一
document.getElementById('btn');
/* JS是区分大小写的
document - 文档
. - 的
getElementById
- get 获取
- Element 元素
- By 通过
- Id
在当前文档中.通过id获取元素
*/
// 调试:在控制台中打印出获取的元素
console.log(document.getElementById('btn'));
</script>
</body>
</html>
获取元素方式二:选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
button{
width: 100px;
height: 50px;
text-align: center;
font: 22px/35px"微软雅黑";
margin:0;
padding: 0;
}
</style>
</head>
<body>
<button id="btn">按钮</button>
<div class="box"></div>
<script>
//获取元素二:通过元素选择器选择
document.querySelector('#btn');
document.querySelector('.box');
console.log(document.querySelector('#btn'));
console.log(document.querySelector('.box'));
/*
* document.querySelector(选择器-CSS中使用的选择器)
* */
</script>
</body>
</html>
总结:通过父级找到子方法

通过父级找到子方法代码实现如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#box{
width: 200px;
height: 200px;
background: red;
}
div{
width: 200px;
height: 200px;
background: green;
}
</style>
</head>
<body>
<!--<div id="box"></div>-->
<!--<div id="box"></div>-->
<div>这是第二个盒子</div>
<section class="wrap">
<div>这是第一个盒子</div>
</section>
<script>
// console.log(document.getElementById('box1'));// 获取一个错误的id
// console.log(document.getElementById('box'));
/*
* document.getElementById()
* - 通过ID进行获取
* - 如果获取一个不存在的ID,得到的结果是null
* - getElementById只有document下右,id是当前页面中唯一的
* - 遇到一个符合条件的元素,返回第一个元素
* */
// 通过父级找到子方法有两种如下
console.log(document.querySelector('.wrap').querySelector('div'));
// console.log(document.querySelector('.wrap div'));
/*
* document.querySelector()
* - 通过选择器进行获取
* - 遇到第一个符合条件的元素,返回第一个元素
* - 如果获取一个不存在的ID,得到的结果是null
* - document/parent:通过文档或者父级使用。
* - IE8 以下不可以使用
* */
</script>
</body>
</html>
4、script标签最合适的放置位置
页面读到<body>标签的时候开始解析页面。当页面结构未发生的时候,在<head>标签中的JS代码如果获取元素,将获取失败。
两种解决方案:
1)JS代码放在<head>中,不推荐这样,如果非要这样的话,需要使用窗口加载window.onland(等待窗口加载完成)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
button{
width: 100px;
height: 50px;
text-align: center;
font: 22px/35px"微软雅黑";
margin:0;
padding: 0;
}
</style>
<script>
// null - 获取的元素不存在
// console.log(document.querySelector('#btn');
// console.log(document.getElementById('btn'));
/*
* window.onload - 等待窗口加载
* function (){
* //放置窗口加载完成之后做的事情
* }
* */
window.onload = function () {
// console.log(document.querySelector('#btn'));
console.log(document.getElementById('btn'));
}
</script>
</head>
<body>
<button id="btn">按钮</button>
</body>
</html>
2)JS代码放在<body>中,让HTML结构先行加载完成。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
button{
width: 100px;
height: 50px;
text-align: center;
font: 22px/35px"微软雅黑";
margin:0;
padding: 0;
}
</style>
</head>
<body>
<button id="btn">按钮</button>
<script>
/*
* 这里的JS代码会等待前面的body页面的元素先行渲染,然后再加载
* 工作中推荐使用的方法
* */
// console.log(document.querySelector('#btn');
console.log(document.getElementById('btn'));
</script>
</body>
</html>
运行结果:

注意:如果JS代码比较庞大,需要较长的时间读取,会影响页面的加载,造成页面长时间的空白。从用户体验来说,长时间空白会让用户绝对打开的速度很慢,从而造成用户的流失。

案例代码实现:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
button {
width: 100px;
height: 50px;
text-align: center;
font: 22px/35px "微软雅黑";
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<!--1准备按钮-->
<button id="btn">按钮</button>
<script>
//2获取元素//3绑定事件
document.querySelector('#btn').onclick = function () {
// 4当元素被点击时候,要做的事情
// alert(1);
// 5获取按钮//6修改元素样式:修改背景色
document.querySelector('#btn').style.background = 'red';
}
/*
* onclick - 点击
* function(){ // 点击后要做的事情} - 函数
*
* style 元素的样式
* style 样式
* background 背景(相关样式)
* ele.style.属性 = '属性值'
* */
</script>
</body>
</html>
运行结果如下:


浙公网安备 33010602011771号