目录
ECMAScript是一种语法标准
语法、变量和数据类型、运算符、逻辑控制语句、关键字、保留字、对象
编码遵循ECMAScript标准
BOM:Browser Object Model(浏览器对象模型)
提供了独立于内容与浏览器窗口进行交互的对象
| 对象名称 | 说明 |
| window | 窗口对象, 可以用来控制当前窗口, 或打开新的窗口 |
| screen | 屏幕对象, 获取屏幕相关信息 |
| navigator | 浏览器对象, 通过这个对象可以判定用户所使用的浏览器 |
| history | 历史对象, 可以用来前进或后退一个页面 |
| location | 地址对象, 可以用来获取当前URL的信息 |
| JavaScript 计时事件 | 在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行 |
| localStorage SessionStorage | 存储对象, 可以用来存储数据, 和cookie相似, 区别是它是为了更大容量存储设计的, 在使用上也更加方便 |
| 弹窗 | 语法 | 说明 |
| 警告框 | window.alert() | 用于确保用户可以得到某些信息 |
| 确认框 | window.confirm() | 用于验证是否接受用户操作 |
| 提示框 | window.prompt() | 用于提示用户在进入页面前输入某个值 |
alert()方法:语法:alert("需要弹出的文本信息")
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <script>
- alert('欢迎你');
- script>
- body>
- html>
confirm()方法:语法:confirm("对话框中显示的纯文本")
- html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title>title>
- head>
- <body>
- <button onclick="deleteDate()">删除button>
- <script>
- function deleteDate(){
- /*
- confirm()弹出一个带有确定按钮和取消按钮的对话框,点击确定按钮返回true,点击取消按钮返回false
- 我们可以根据返回的true或者false来执行不同的操作
- */
- var result =confirm('确认删除吗?');
- console.log(result);
- if(result){
- console.log("数据删除成功");
- }else{
- console.log("你取消了删除操作");
- }
- }
-
- script>
- body>
- html>
prompt()方法:语法:prompt(msg(要在对话框中显示的纯文本),defaultText(默认的输入文本))
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <script>
- //prompt():从页面中输入数据,得到的数据类型是string类型,你不输入数据,直接点击确定按钮,得到的内容是空内容,类型还是string,如果你点击取消按钮,得到的数据是null,数据类型是object
-
- // var age = prompt();
- //弹出输入框,输入框有提示信息
- // var age = prompt("请输入你的年龄:");
- //弹出输入框,输入框有提示信息和默认值
- var age = prompt("请输入你的年龄:",18);
- console.log(age);
- console.log(typeof age);
- script>
- body>
- html>
用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面
| 语法 | 说明 |
| location.href | 返回当前页面的 URL |
| location.pathname | 返回 URL 的路径名 |
| location.assign() | 加载新的文档 |
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <button onclick="newPath()">加载新的文档button>
- <script>
- console.log(location.href);
- console.log(location.pathname);
-
- function newPath(){
- location.assign("https://www.baidu.com/");
- }
-
-
- script>
- body>
- html>
DOM:Document Object Model(文档对象模型)
是HTML文档对象模型(HTML DOM)定义的一套标准方法,用来访问和操纵HTML文档
| 语法 | 说明 |
| document.getElementById | 通过id属性获取对象 |
| document.getElementsByTagName | 通过标签名获取对象 |
| document.getElementsByClassName | 通过class属性获取对象 |
getElementById("id属性值"):通过id属性值来获取元素,因为id具有唯一性,所以通过此函数获取的元素只有一个
getElementsByTagName("标签名"):通过标签名称来获取元素,因为一个页面中可能有多个同名的标签,所以此函数将获取来的元素放在一个类似于数组的集合中(HTMLCollection)
getElementsByClassName("class属性值"):通过class属性值来获取元素,因为class属性值可以被不同的标签重复使用,所以此函数获取的元素可能有多个,将获取的元素放在一个类似数组的集合中(HTMLCollection)
querySelector("#id属性值/.class属性值/标签名"):此函数只获取页面中满足要求的第一个元素
querySelectorAll(".class属性值/标签名"):因为class属性值可以被不同的标签使用/一个页面中可以有多个同名的标签,此函数获取的元素可能会有多个,此函数会将获取的元素存放在一个类似数组的节点结合中(NodeList)
注意:使用getElementsByTagName("标签名")/getElementsByClassName("class属性值")/querySelectorAll("标签名/.属性值")获取元素,哪怕只有一个元素满足条件,也会将获取的这一个元素放入类似数组的集合(HTMLCollection)或者节点集合(NodeList)中
在CSS中和JS中,如果你要操作HTML元素,第一步要做的事情都是找到这个元素,CSS中是通过选择器来找,JS中是通过上述函数来找
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
-
- <h2 class="demo">我是2级标题标签1h2>
- <h2>我是2级标题标签2h2>
- <p class="demo">我是段落标签1p>
- <p>我是段落标签2p>
- <p id="test">我是段落标签3p>
- <ul>
- <li>列表项第1项li>
- <li class="demo">列表项第2项li>
- <li>列表项第3项li>
- <li>列表项第4项li>
- <li>列表项第5项li>
- ul>
- <h3>我是3级标题标签h3>
- body>
-
- <script>
- //获取HTML元素
- //getElementById("id属性值"):通过id属性值来获取元素,因为id具有唯一性,所以通过此函数获取的元素只有一个
- var idTestEle=document.getElementById('test');
- console.log(idTestEle);
-
- //getElementsByTagName("标签名"):通过标签名称来获取元素,因为一个页面中可能有多个同名的标签,所以此函数将获取来的元素放在一个类似于数组的集合中(HTMLCollection)
- var pEles =document.getElementsByTagName("p");
- console.log(pEles);
- console.log(pEles[1]);
- console.log("-----------------------");
- //输出所有的p元素
- for(var i =0;i
length;i++){ - console.log(pEles[i]);
- }
-
- console.log("-----------------------");
-
- //getElementsByClassName("class属性值"):通过class属性值来获取元素,因为class属性值可以被不同的标签重复使用,所以此函数获取的元素可能有多个,将获取的元素放在一个类似数组的集合中(HTMLCollection)
- var classDemoEles=document.getElementsByClassName("demo");
- console.log(classDemoEles);
- //获取里面第1个元素
- console.log(classDemoEles[0]);
- console.log('元素个数:'+classDemoEles.length);
- //for-in循环遍历所有的元素
- for(var i in classDemoEles){
- if(i<3){
- console.log(classDemoEles[i]);
- }
-
- }
-
- console.log("------------------------------------------------------");
-
- //querySelector("#id属性值/.class属性值/标签名");此函数只获取页面中满足要求的第一个元素
- var testIdEle=document.querySelector("#test");
- console.log(testIdEle);
-
- var demoClassEle=document.querySelector(".demo");
- console.log(demoClassEle);
-
- var liEle =document.querySelector('li');
- console.log(liEle);
-
- console.log("------------------------------------------------------");
-
- //querySelectorAll(".class属性值/标签名");因为class属性值可以被不同的标签使用/一个页面中可以有多个同名的标签,此函数获取的元素可能会有多个,此函数会将获取的元素存放在一个类似数组的节点结合中(NodeList)
- var demoClassElements=document.querySelectorAll('.demo');
- console.log(demoClassElements);
-
- var liElements =document.querySelectorAll('li');
- console.log(liElements);
- for(var i =0;i
length;i++){ - console.log(liElements[i]);
- }
-
- //注意:使用getElementsByTagName("标签名")/getElementsByClassName("class属性值")/querySelectorAll("标签名/.属性值")获取元素,哪怕只有一个元素满足条件,也会将获取的这一个元素放入类似数组的集合(HTMLCollection)或者节点集合(NodeList)中
- var h3Eles=document.querySelectorAll("h3");
- console.log(h3Eles);
- var h3Elements = document.getElementsByTagName('h3');
- console.log(h3Elements);
-
- //总结:在CSS中和JS中,如果你要操作HTML元素,第一步要做的事情都是找到这个元素,CSS中是通过选择器来找,JS中是通过上述函数来找
-
- script>
- html>
| 语法 | 说明 |
| document.write() | 改变 HTML 输出流 |
| 对象.innerHTML=新的 HTML | 改变 HTML 内容 |
| 对象.attribute=新属性值 | 改变 HTML 属性 |
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
-
- body>
- <script>
- document.write('大湖名城,创新高地');
- document.write('
中国·合肥
'); - script>
- html>
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <h2>大湖名城,创新高地h2>
- <p>我是段落标签p>
- <button onclick="addEle()">点我一下button>
- body>
- <script>
- //注意:如果页面中的HTML元素已经加载完毕之后,你再通过JS里的write()改变HTML,那么输出的元素会覆盖之前加载完毕的HTML元素
- function addEle(){
- document.write('中国·合肥,科教城市');
- }
-
- script>
- html>
对象.innerHTML:获取对象中的元素(标签和内容一起)
对象.innerText:获取对象中的内容(标签不获取)
注意:
使用innerHTML向元素中插入内容,内容中包含标签的时候,浏览器会将标签进行解析
使用innerText向元素中插入内容,内容中包含标签的时候,浏览器不会对标签进行解析,将标签当做文本直接输出
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <ul>
- <li>1111li>
- <li>2222li>
- <li>3333li>
- ul>
- body>
- <script>
- //获取ul元素
- var ulEle =document.querySelector('ul');
- console.log(ulEle);
-
- //对象.innerHTML:获取对象中的元素(标签和内容一起)
- var result1=ulEle.innerHTML;
- console.log(result1);
-
- //对象.innerText:获取对象中的内容(标签不获取)
- var result2=ulEle.innerText;
- console.log(result2);
-
- script>
- html>
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- <style>
- div{
- width: 300px;
- height: 200px;
- background-color: #ccc;
- margin: 20px;
- }
-
- style>
- head>
- <body>
- <div>div>
- <div>div>
- body>
- <script>
- //获取两个div元素
- var divEles = document.querySelectorAll('div');
-
- //使用对象.innerHTML向第一个div元素中添加内容
- divEles[0].innerHTML = '
大湖名城,创新高地
'; -
- //使用对象.innerText向第二个div元素中添加内容
- divEles[1].innerText = '
大湖名城,创新高地
'; -
- /*
- 注意:
- 使用innerHTML向元素中插入内容,内容中包含标签的时候,浏览器会将标签进行解析
- 使用innerText向元素中插入内容,内容中包含标签的时候,浏览器不会对标签进行解析,将标签当做文本直接输出
- */
- script>
- html>
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <img src="img/car.jpg" width="300px"/>
- body>
-
- <script>
- //第一步:获取img标签
- var imgEle =document.querySelector('img');
-
- console.log(imgEle);
- var srcAttr = imgEle.src;
- console.log(srcAttr)//http://127.0.0.1:8848/Day09BOM%E5%92%8CDOM/img/car.jpg
- //获取图像的名称
- //1、从后面开始往前查找图像路径中的/位置
- var index =srcAttr.lastIndexOf('/');
- //2.从srcAttr这个字符串中截取你想要的内容,从index+1的位置开始截取,截取到最后位置
- var imgName =srcAttr.substring(index+1);
- console.log(imgName);
-
- //将上面图像换成另外一张图片
- imgEle.src = 'img/runCar.jpg';
-
- script>
- html>
| 语法 | 说明 |
| 对象.style.property=新样式 | 通过id属性获取对象 |
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <p>我是一个段落标签p>
- <button onclick="changePeleStyle()">改变p标签的样式button>
- body>
-
- <script>
- //定义函数changePeleStyle
- function changePeleStyle(){
- //第一步:获取p元素
- var pEle = document.querySelector('p');
- //第二步:对p元素设置样式
- pEle.style.fontSize = '40px';
- pEle.style.color = '#f00';
- pEle.style.backgroundColor='#ccc';
- pEle.style.width = '400px';
- pEle.style.height = '100px';
-
- }
-
- script>
- html>
| 语法 | 说明 |
| setInterval() | 间隔指定的毫秒数不停地执行指定的代码 |
| clearInterval() | 用于停止 setInterval() 方法执行的函数代码 |
| setTimeout() | 暂停指定的毫秒数后执行指定的代码 |
| clearTimeout() | 用于停止执行setTimeout()方法的函数代码 |
setInterval()方法:语法:setInterval("调用的函数",间隔的毫秒数)
clearInterval()方法:语法:clearInterval(setInterval()返回的ID值)
setTimeout()方法:语法:setTimeout("调用的函数",等待的毫秒数)
clearTimeout()方法:语法:clearTimeout(setTimeOut()返回的ID值)
clearTimeout() 方法可取消由 setTimeout() 方法设置的 timeout
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <button onclick="showAlert()">你点我一下button>
- <button onclick="stopAlert()">停止button>
-
- <button onclick="showOneAlert()">你也点我一下button>
- <button onclick="stopOneAlert()">停止一次弹出button>
- body>
-
- <script>
- //点击“你点我一下”按钮,执行showAlert()函数,该函数中包含一个计时器,这个计时器实现每隔3秒种弹出一次警告窗
- var interVal;
- var timeOut;
-
- function showAlert(){
- interVal=setInterval(function(){
- alert('你点我干什么?')
- },3000);
- }
-
- //点击“停止”按钮,将第一个按钮里的操作停止
- function stopAlert(){
- clearInterval(interVal)
- }
-
- //点击“你也点我一下”按钮,执行showOneAlert()函数,该函数中包含一个计时器,这个计时器实现在指定毫秒数后弹出一个警告窗,警告窗只弹出1次
- function showOneAlert(){
- timeOut=setTimeout(function(){
- alert('我弹出来了,我只弹出1次');
- },4000);
- }
-
- //点击“停止一次弹出”按钮,将第二个计时器实现的效果停止
- function stopOneAlert(){
- clearTimeout(timeOut);
- }
-
- script>
- html>
setInterval()与setTimeout特点及区别
特点
setInterval()和setTimeout()用来处理延时和定时任务
区别
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则可以在每隔指定的毫秒数循环调用函数或表达式
