JavaScript入门
一、JavaScript介绍
1、JavaScript历史
2、JavaScript介绍
作用:
如果把HTML比做一个人,那么CSS就是衣服,那JS就是指人的动作和行为
书写:
JS代码可以直接写在script
标签里面,或者写在其他的js后缀文件
中,并通过script标签引入。注意:在引入js文件的script里面,一定不能写js代码
,当然也可以在标签内些js代码,但是这种方式并不推荐。
要求:
1、一般把script标签写在head
或者body
里
2、要注意的是是否需要加上window.onload
3、如果没有特殊要求,一般script标签放在body结束
之前
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS获取元素的方法</title>
</head>
<body>
<div id="div1">
<p id="p1">我是一个段落1</p>
<p class="p2">我是一个段落2</p>
<p class="p3" name="p4">我是一个段落3</p>
</div>
<script>
// JS获取独有的标签
// console.log(document.title);
// = 赋值的意思,通常要用赋值的形式
// console.log(document.title='这里可以更改');
// console.log(document.head);
// console.log(document.body);
// 在修改别的标签,得用innerHTML(会解析标签),innerText(不会解析标签)
// console.log(document.body.innerHTML = '<h1>hello the world</h1>');
// console.log(document.body.innerText = '<h1>hello the world</h1>');
</script>
</body>
</html>
二、JS获取元素
1、JavaScript获取标签
意义:
在js中想要操作元素,或者说执行一些行为,首先需要获取到对应的元素。才能进行下一步的操作,所以要首先学会如何获取元素
JS获取独有标签:
document.title
获取标题
document.head
获取头部信息
document.body
获取body内容
其他标签的获取:
1、通过id获取元素:document.getElementById("idname");
2、通过class获取元素:document.getElementsByClassName("classname");
3、通过标签名获取元素:document.getElementsByTagName("tagdem");
4、表单中的name:document.getElementsByName("name");
5、selector选择器(不兼容IE7及以下)
document.querySelector("");
通过CSS选择器获取一个
document.querySelectorAll("");
通过CSS选择器获取所有
1、JS获取独有标签
独有标签
document.title
document.head
document.body
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取独有标签</title>
</head>
<body>
<script>
// = 赋值的意思,通常要用赋值的形式
console.log(document.title = '这个是修改标题');
// document.head;
// 在修改别的标签,得用innerHTML(会解析标签),innerText(不会解析标签)
console.log(document.body.innerText = '<h1>hello the world</h1>');
// document.body.innerHTML = '<h1>hello the world</h1>';
</script>
</body>
</html>
2、通过id获取元素-id
通过id获取
可以通过标签中的id来操作元素
document.getElementById("idname");
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取独有标签</title>
</head>
<body>
<div id="dv1">不笑运气差,一笑就脸大</div>
<script type="text/javascript">
// = 赋值的意思,通常要用赋值的形式
// console.log(document.title = '这个是修改标题');
// document.head;
// 在修改别的标签,得用innerHTML(会解析标签),innerText(不会解析标签)
// console.log(document.body.innerText = '<h1>hello the world</h1>');
// document.body.innerHTML = '<h1>hello the world</h1>';
// var 定义变量,变量名不能是关键字,也不是保留字
var oDv = document.getElementById('dv1')
// alert(oDv)
oDv.innerHTML = "不想听大道理,只想吃小雪糕。"
</script>
</body>
</html>
3、通过class获取元素
class
通过class也可以获取元素。但是这里要记住,获取得是多个标签,因此具体要操作哪一个标签,需要使用下标
document.getElementByClassName(“classname”);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取独有标签</title>
</head>
<body>
<div id="dv1">不笑运气差,一笑就脸大
<p class="box" id="p1">我是段落标签1</p>
<p class="box" id="p2">我是段落标签2</p>
</div>
<script type="text/javascript">
// = 赋值的意思,通常要用赋值的形式
// console.log(document.title = '这个是修改标题');
// document.head;
// 在修改别的标签,得用innerHTML(会解析标签),innerText(不会解析标签)
// console.log(document.body.innerText = '<h1>hello the world</h1>');
// document.body.innerHTML = '<h1>hello the world</h1>';
// var 定义变量,变量名不能是关键字,也不是保留字
// var oDv = document.getElementById('dv1')
// alert(oDv)
// oDv.innerHTML = "不想听大道理,只想吃小雪糕。"
var aBox = document.getElementsByClassName('box')
// alert(aBox.length) // 打印长度
// 当不唯一时,需要使用下标,下标从0开始
aBox[0].innerHTML = '<b>谁还没个擅长的乐器呢!</b>'
</script>
</body>
</html>
4、通过标签名获取元素
tagName
通过class
也可以获取元素
但是这里要记住,获取得是多个标签,因此具体要操作哪一个标签,需要使用下标
document.getElementByTagName("tagname");
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取独有标签</title>
</head>
<body>
<div id="dv1">不笑运气差,一笑就脸大
<p class="box" id="p1">我是段落标签1</p>
<p class="box" id="p2">我是段落标签2</p>
</div>
<script type="text/javascript">
// = 赋值的意思,通常要用赋值的形式
// console.log(document.title = '这个是修改标题');
// document.head;
// 在修改别的标签,得用innerHTML(会解析标签),innerText(不会解析标签)
// console.log(document.body.innerText = '<h1>hello the world</h1>');
// document.body.innerHTML = '<h1>hello the world</h1>';
// var 定义变量,变量名不能是关键字,也不是保留字
// var oDv = document.getElementById('dv1')
// alert(oDv)
// oDv.innerHTML = "不想听大道理,只想吃小雪糕。"
// var aBox = document.getElementsByClassName('box')
// alert(aBox.length) // 打印长度
// 当不唯一时,需要使用下标,下标从0开始
// aBox[0].innerHTML = '<b>谁还没个擅长的乐器呢!</b>'
var aP = document.getElementsByTagName('p')
// alert(aP.length)
// 标签同样也是多个,也需要用下标去取
aP[1].innerHTML = '<b>闹钟的作用大概就是,让我换个姿势继续睡。</b>'
</script>
</body>
</html>
5、selector选择器
selector
document.querySelector("");
通过CSS选择器获取一个
document.querySelectorAll("");
通过CSS选择器获取所有
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取独有标签</title>
</head>
<body>
<div id="dv1">不笑运气差,一笑就脸大
<p class="box" id="p1">
<i>我是段落标签1</i>
</p>
<p class="box" id="p2">
<i>我是段落标签2</i>
</p>
</div>
<script type="text/javascript">
// = 赋值的意思,通常要用赋值的形式
// console.log(document.title = '这个是修改标题');
// document.head;
// 在修改别的标签,得用innerHTML(会解析标签),innerText(不会解析标签)
// console.log(document.body.innerText = '<h1>hello the world</h1>');
// document.body.innerHTML = '<h1>hello the world</h1>';
// var 定义变量,变量名不能是关键字,也不是保留字
// var oDv = document.getElementById('dv1')
// alert(oDv)
// oDv.innerHTML = "不想听大道理,只想吃小雪糕。"
// var aBox = document.getElementsByClassName('box')
// alert(aBox.length) // 打印长度
// 当不唯一时,需要使用下标,下标从0开始
// aBox[0].innerHTML = '<b>谁还没个擅长的乐器呢!</b>'
// var aP = document.getElementsByTagName('p')
// alert(aP.length)
// 标签同样也是多个,也需要用下标去取
// aP[1].innerHTML = '<b>闹钟的作用大概就是,让我换个姿势继续睡。</b>'
// 类似于CSS的选择器来选择,这里只会选择一个
// var oPP = document.querySelector('#dv1 p')
// oPP.innerHTML = '生活不仅有甜头,还有肉吃'
// 选择所有,具体制定的时候,就需要用下标
var aPP = document.querySelectorAll('#dv1 p')
aPP[1].innerHTML = '<b>别对我大呼小叫,我小时候被狗吓过。</b>'
</script>
</body>
</html>
6、其他补充
补充
id前面必须是document,其他的前面可以是某个元素(id,document),但不能是集合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取独有标签</title>
</head>
<body>
<!--<div id="dv1">不笑运气差,一笑就脸大-->
<!-- <p class="box" id="p1">-->
<!-- <i>我是段落标签1</i>-->
<!-- </p>-->
<!-- <p class="box" id="p2">-->
<!-- <i>我是段落标签2</i>-->
<!-- </p>-->
<!--</div>-->
<div id="box">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script type="text/javascript">
// = 赋值的意思,通常要用赋值的形式
// console.log(document.title = '这个是修改标题');
// document.head;
// 在修改别的标签,得用innerHTML(会解析标签),innerText(不会解析标签)
// console.log(document.body.innerText = '<h1>hello the world</h1>');
// document.body.innerHTML = '<h1>hello the world</h1>';
// var 定义变量,变量名不能是关键字,也不是保留字
// var oDv = document.getElementById('dv1')
// alert(oDv)
// oDv.innerHTML = "不想听大道理,只想吃小雪糕。"
// var aBox = document.getElementsByClassName('box')
// alert(aBox.length) // 打印长度
// 当不唯一时,需要使用下标,下标从0开始
// aBox[0].innerHTML = '<b>谁还没个擅长的乐器呢!</b>'
// var aP = document.getElementsByTagName('p')
// alert(aP.length)
// 标签同样也是多个,也需要用下标去取
// aP[1].innerHTML = '<b>闹钟的作用大概就是,让我换个姿势继续睡。</b>'
// 类似于CSS的选择器来选择,这里只会选择一个
// var oPP = document.querySelector('#dv1 p')
// oPP.innerHTML = '生活不仅有甜头,还有肉吃'
// 选择所有,具体制定的时候,就需要用下标
// var aPP = document.querySelectorAll('#dv1 p')
// aPP[1].innerHTML = '<b>别对我大呼小叫,我小时候被狗吓过。</b>'
var oBox = document.getElementById('box')
// alert(oBox) //对于ID的获取,必须是document开头
var aLi = oBox.getElementsByTagName('li')
// alert(aLi.length)
//获取元素,只要是一个确定的标签即可
var aUl = document.getElementsByTagName('ul')
var aLi = aUl[1].getElementsByTagName('li')
alert(aLi.length)
</script>
</body>
</html>
三、JS基础事件
1、JS简单事件
含义:
所谓事件,是指JavaScript捕获到用户的操作,并做出正确的响应
使用:
在事件函数里面,有个一关键字this,代表当前发事件的这个元素
鼠标事件:
左键单击:onclick
左键双击:ondbclick
鼠标移入:onmouseover/onmouseenter
鼠标移出:onmouseout/onmouseleave
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS的基础事件</title>
<style>
.dv1{
width: 200px;
height: 200px;
background: #D2691E;
}
</style>
</head>
<body>
<div class="dv1"></div>
<script>
var aDv = document.getElementsByClassName('dv1')
aDv[0].onclick = function(){
aDv[0].innerHTML = '点击完成了'
// this.innerHTML = '点击完成了' //this代表发生时间的元素
}
aDv[0].onmouseenter = function () {
this.innerHTML = '鼠标移入'
}
aDv[0].onmouseleave = function () {
this.innerHTML = '鼠标移出'
}
</script>
</body>
</html>
事件通过函数完成,在函数内部书写自己想要实现的效果
四、JS修改样式
1、JS修改样式
解释:
js可以修改规范和不规范的标签的样式,也可以配合点击事件等一起使用
规范标签:
规范标签属性:.符号直接操作(可读可写)
不规范(自定义)的标签属性:
获取:.getAttribute()
设置:.setAttribute()
移除:.removeAttribute()
注意项:
1、所有的路径、颜色获取的结果不一定是你写的内容
2、通过id获取得元素赋值给变量后,假设修改了id,这个变量还是表示这个元素
3、自定义标签属性的操作方式,同样可以操作符合规范的标签属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS修改样式</title>
</head>
<body>
<a href="https://baidu.com" id="box" class="wrap" target="_blank"></a>
<script type="text/javascript">
var oA = document.getElementById('box')
// alert(oA.id) // 可读性:可以看到属性值
// alert(oA.target)
// alert(oA.className) // 查看class需要使用className才行
oA.target = '_self' // 可写性:只要是规范的标签,都可写
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS修改样式</title>
<style>
.box{
width: 200px;
height: 200px;
background: #87CEEB;
}
</style>
</head>
<body>
<!--<a href="https://baidu.com" id="box" class="wrap" target="_blank"></a>-->
<div class="box"></div>
<script type="text/javascript">
// var oA = document.getElementById('box')
// alert(oA.id) // 可读性:可以看到属性值
// alert(oA.target)
// alert(oA.className) // 查看class需要使用className才行
// oA.target = '_self' // 可写性:只要是规范的标签,都可写
var aBox = document.getElementsByClassName('box')
// 获取标签之后,可以直接更改样式中的属性
// aBox[0].style.background = 'red';
// 也可以和响应事件组合起来用
aBox[0].onclick = function () {
// 使用cssText 可以同时修改多个
aBox[0].style.cssText = "width: 300px; height: 300px; background: red;"
}
// 对于有-号连接的属性,改成驼峰命名的规则
// aBox[0].style.marginLeft = '100px';
aBox[0].style["margin-top"] = '100px';
var mleft = "margin-left";
aBox[0].style[mleft] = '100px';
// style[]可以是变量也可以是字符串
</script>
</body>
</html>
五、JS基本数据类型
1、JS数据类型
number:
数字
,在js里面的小数和整数统一都是数字。-2^53 ~ 2^53超出范围之后精度就会不准确
boolean:
布尔值(ture、false)
undefined:
未定义
,一个变量声明之后没有复制就是undefined
string:
字符串
null:
空值
,在js里面null属于对象类型,但是它不具有很多对象的共性,所以很多资料将他归为单一类的数据类型null
object:
对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS数据类型</title>
</head>
<body>
<script type="text/javascript">
// var nu = 5;
// var nu = -12.5;
// var nu = 'this is string';
// var nu = false;
// var nu; // undefined
// var nu = [1,23]; // 数组,字典都属于对象
// alert(typeof nu); // typeof 查看类型
var a = 1, b = 2;
alert(a + b)
</script>
</body>
</html>