赞
踩
目录
1.什么是js
JavaScript,简称js,是web开发中不可缺少的脚本语言,不需要编译就能运行(解释型语言)。在传统的web开发里,它“寄生”在html体内放在服务器上,随网络传输到客户端,在浏览器里运行
2.js作用
监听用户的动作:使用的是js的事件监听机制
可以操作浏览器的行为:比如让浏览器弹窗、历史记录的前进、后退等等
可以改变网页的内容:可以修改html标签、标签的属性、标签的样式,然后页面显示的效果就会随之改变
内部js:在html里任意位置添加<script> 在这里写js代码 </script>
标签,在标签内部写js代码
外部js:把js代码写到单独的js文件里,html中使用<script src="js文件路径"></script>
引入js文件
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>引入js</title>
- </head>
- <body>
-
-
- <!-- 引入方式1. 在html里直接添加script标签,把js代码写在script标签内部 -->
- <script>
- alert("内部js");
- </script>
-
- <!-- 引入方式2. 把js代码写在单独的js文件里,html中使用script标签引入js文件 -->
- <script src="./js/demo.js"></script>
- </body>
- </html>
1.基础语法
区分大小写
每行结尾的分号可有可无
注释的写法:
单行注释:// 注释内容
多行注释:/* 注释内容 */
js常用的打印输出语句有:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>js基础语法</title>
- </head>
- <body>
- hello, javascript
-
-
- <script>
- //1. js区分大小写
- //2. 每行结尾的分号可写可不写
- //3. 注释的写法和Java一样
-
- // 使用浏览器弹窗
- window.alert("JavaScript简称js");
-
- // 把内容输出到页面上
- document.write("JavaScript借鉴了Java,但两者没有关系");
-
- // 把内容打印到浏览器控制台。
- // 使用浏览器打开此页面后,按F12,找到“Console”或者“控制台”就能看到输出的内容
- console.log("布兰登·艾克用了10多天就创建了JavaScript语言");
- </script>
- </body>
- </html>
2.变量和常量定义
在js中,变量的声明和java中还是不同的。首先js中主要通过如下3个关键字来声明变量的:
命名规范:和Java相似
组成字符可以是任何字母、数字、下划线(_)或美元符号($)
数字不能开头
建议使用驼峰命名
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>js变量定义</title>
- </head>
- <body>
-
- <script>
- //js中一切变量定义都使用:let,无论是什么类型的变量
- // 老版本的js(ECMAScript5)中,使用var定义变量。从ECMAScript6开始,建议使用let定义变量
- let v1 = 3;
- let v2 = "hello";
- let v3 = true;
- let v4 = new Date();
-
- //js中的常量定义使用:const
- // 常量不允许修改值,执行代码时会报错(打开浏览器的F12,控制台里可看到报错信息)
- const PI = 3.14;
- PI = 3.1415;
- </script>
- </body>
- </html>
3.数据类型和运算符
虽然js是弱类型语言,但是也有数据类型,分为 :原始类型 和 引用类型
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>js的数据类型</title>
- </head>
- <body>
-
- <script>
- //使用`typeof`函数判断变量的类型
- console.log(typeof 3); //number
- console.log(typeof "3") //string
- console.log(typeof true) //boolean
- console.log(typeof null) //object
- console.log(typeof undefined) //undefined
-
- let v;
- console.log(typeof v) //undefined。声明变量但未初始化,是undefined
- </script>
- </body>
- </html>
js的运算符:绝大多数还是和java中一致
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>运算符</title>
- </head>
- <body>
-
- <script>
- //算术运算符:+, -, *, /, %, ++, --
- //赋值运算符:+=, -=, *=, /=, %=, =
- //比较运算符:>, <, >=, <=, ==, !=, ===, !==
- //逻辑运算符:&&, ||, !
- //三元运算符
-
- console.log(3 == "3") //结果是true。因为==只比较值,只要值相同,结果就是true
- console.log(3 === "3")//结果是false。因为===比较值和类型,只有两个都相同,结果才是true
- </script>
- </body>
- </html>
4.流程控制语句
js的流程控制语句和Java非常相似,也有:
if, else, else if:用于条件判断
for,while,do while:用于循环遍历
用法也和Java的流程控制语句几乎相同,所以这里只介绍一个特殊情况:if
判断
js里条件判断,通常用于判断boolean值
js也能对任意类型的值进行if判断:
数字类型的0
,对象类型的null
,字符串类型的""
,还有undefined
判断为false
- <html>
- <head>
- <title></title>
- </head>
- <body>
-
- <script>
- if(0){
- console.log("0判断为true")
- }else{
- console.log("0判断为false")
- }
-
- if(""){
- console.log("空字符串判断为true")
- }else{
- console.log("空字符串判断为false")
- }
-
- if(null){
- console.log("null判断为true")
- }else{
- console.log("null判断为false")
- }
-
- if(undefined){
- console.log("undefined判断为true")
- }else{
- console.log("undefined判断为false")
- }
- </script>
- </body>
- </html>
1.函数名两种:
普通函数:有名称的函数,通过函数名来调用函数
匿名函数:没有名的函数,要么赋值给一个变量然后通过变量名调用,要么把函数直接作为其它函数的实参
注意:
js里没有函数重载,同名函数会覆盖掉
js的形参不需要声明类型,直接写形参名称即可
js的函数不写返回值类型,如果需要返回,在函数里直接return
即可
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>js的函数</title>
- </head>
- <body>
-
- <script>
- //js的函数:相当于Java里的方法,都是用于复用代码的
-
- //1. 普通函数。不需要写返回值类型;形参不需要写类型;
- function add(a, b){
- return a+b;
- }
- let res = add(3, 5);
- console.log(res)
-
- //2. 匿名函数。通常赋值给一个变量,通过变量名调用函数;也可以把匿名函数直接作为另外一个函数的实参
- let fn = function(a, b){
- return a * b;
- }
- let res2 = fn(3, 5);
- console.log(res2)
- </script>
- </body>
- </html>
2.案例轮播图:
- <!DOCTYPE html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>轮播图</title>
- </head>
-
- <body>
-
- <!--
- 轮播图,需求:
- 打开页面之后,页面上显示一张图片
- 每间隔2秒钟,切换一张图片
- 分析:
- 1. 无论图片如何切换,必须要显示图片:就必须要使用img标签
- 2. 每间隔2秒钟做一些事情:周期性的执行任务,setInterval(函数对象, 2000)
- 3. 如何切换图片?只要把img的src属性值修改,就可以切换图片
- 需要使用js修改img的src属性值:document.getElementById("image").src = "新值"
- -->
-
- <img src="./image/1.jpg" alt="" id="image" width="500px">
- <script>
- //1. 把资料里的1.jpg到5.jpg拷贝到 VSCode的image文件夹里
- //2. 创建html页面,实现轮播图
- let image = document.getElementById("image");
- let filename = 1;
- setInterval(function() {
- if(++filename > 5){
- filename = 1;
- }
- image.src = "./image/" + filename + ".jpg";
- }, 2000);
- </script>
- </body>
- </html>
3.js事件
事件:用户的一些动作,或者浏览器的一些状态变化。js提供了监听事件的一些属性
事件源:事件发生在哪。通常是html标签上
响应行为:事件发生后,要执行的代码、实现的功能
常见事件:
绑定语法:
普通函数方式绑定,语法:<input type="button" value="按钮" onclick="show()">
匿名函数方式绑定,纯js方式绑定,
语法:document.getElementById("事件源标签id").onclick= function(){}
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>事件绑定1</title>
- </head>
- <body>
- <!--
- 需求:按钮点击时弹窗“点我干嘛”
- 分析:监听到按钮上发生 “被点击了” 事件时,要弹窗“点我干嘛”
- 事件源:按钮
- 事件:单击事件,要使用“onclick"监听到
- 响应行为: 弹窗“点我干嘛”
- 实现:
- 在事件源标签上加属性onclick,值是js代码“调用一个函数”
- -->
- <input type="button" value="按钮1" onclick="show()">
- <input type="button" value="按钮2" id="btn2">
-
- <script>
- function show(){
- alert("点我干嘛1");
- }
-
- document.getElementById("btn2").onclick = function(){
- alert("点我干嘛2");
- };
- </script>
- </body>
- </html>
案例:鼠标控制轮播图
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>轮播图</title>
- </head>
- <body>
- <img src="./image/1.jpg" alt="" id="image" width="500px" onmouseenter="stop()" onmouseleave="start()">
- <script>
- //定义一个变量,用于存储定时器的id;在清除定时器时要使用
- let timer;
-
- //直接调用一次start方法,页面一打开就开始
- start();
-
- //开始轮播方法
- function start(){
- let image = document.getElementById("image");
- let filename = 1;
- timer = setInterval(function() {
- if(++filename > 5){
- filename = 1;
- }
- image.src = "./image/" + filename + ".jpg";
- }, 2000);
- }
-
- //停止轮播方法
- function stop(){
- clearInterval(timer)
- }
- </script>
- </body>
- </html>
1.Array对象
js的数组,更加类似于Java的集合,因为js数组的长度可变
定义数组:
let 变量名 = new Array(元素1, 元素2, 元素3, ...);
let 变量名 = [ 元素1, 元素2, 元素3, ... ];
遍历于存储:
arr[索引] = 值;
let v = arr[索引];
常用属性名与方法:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>js数组</title>
- </head>
- <body>
-
- <script>
- //1. 定义数组
- // new Array(元素1,元素2,...)
- let arr1 = new Array("A", 1, true);
- console.log(arr1)
-
- // [元素1,元素2,...]
- let arr2 = ["B", 2, false];
- console.log(arr2)
-
-
- //2. 循环遍历
- let arr = ["A", "B", "C", "D", "E"];
- for (let i = 0; i < arr.length; i++) {
- console.log(arr[i])
- }
-
- //3. length属性。
- console.log("arr长度:", arr.length); //5
- // 设置数组长度。
- // 如果设置的值小,就截断数组;如果设置的值大,就扩容数组,没有值的元素是undefined
- arr.length = 3;
- console.log("设置arr长度为3后:", arr); // A, B, C
-
- //4. 常用方法
- // 循环遍历forEach
- arr.forEach(function(value){
- console.log("arr遍历元素值:", value)
- })
- // 尾部添加元素
- arr.push("hello")
- console.log("arr尾部添加元素hello后:", arr); //A, B, C, hello
- // 从索引2开始,删除1个元素
- arr.splice(2, 1)
- console.log("arr删除索引1元素后:", arr) //A, B, hello
- </script>
- </body>
- </html>
2.String对象
定义字符串:
let 变量名 = new String("hello");
var 变量名 = "hello";
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>js字符串</title>
- </head>
- <body>
-
- <script>
- //定义字符串:
- let str = " hello, world ";
-
- console.log("str字符串的长度:", str.length)
- console.log("从str中查找wo:", str.indexOf("wo"))
- console.log(str.trim())
- console.log("从str中截取索引3到索引5的子串:", str.substring(3,5))
- </script>
- </body>
- </html>
3.JSON对象【重点】
JSON对象:JavaScript Object Notation,JavaScript对象标记法,是通过JavaScript标记法书写的文本,通常作为数据传输的格式。
json使用场景
可以作为配置文件的格式。例如我们的讲义所用的typora软件,其配置文件就是json格式的
可以作为前后台交互的数据载体。前后台交互时,我们需要传输数据,为了方便双方解析数据,可以采用json格式
json常用方法:
- <!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>JS-对象-JSON</title>
- </head>
- <body>
-
- </body>
- <script>
- // json格式的字符串 ==> json对象
- let jsonstr = '{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}';
- let obj = JSON.parse(jsonstr);
- console.log(obj.name);
-
- // json对象 ==> json格式的字符串
- console.log(JSON.stringify(obj));
- </script>
- </html>
BOM:Broswer Object Model,浏览器对象模型。BOM对象提供了操作浏览器的方法,我们通过BOM对象可以让浏览器弹窗、切换历史记录等等。
1.window对象
window对象是所有bom对象的顶级对象,可以通过window.
来获取其它4个bom对象,只是window.
通常省略不写
2.location对象
location是指代浏览器的地址栏对象,常用于获取或者设置浏览器的地址信息:
- <html>
- <head>
- <title>location对象 </title>
- </head>
- <body>
-
- <script>
- //获取浏览器地址栏信息
- alert(location.href);
- //设置浏览器地址栏信息
- location.href = "https://www.itcast.cn";
- </script>
- </body>
- </html>
1.DOM:Document Object Model 文档对象模型。JavaScript 将 HTML 文档的各个组成部分封装为对象,通过这些对象我们可以操作HTML的标签、属性、样式等等。
Document:整个文档对象
Element:元素对象
Attribute:属性对象
Text:文本对象
Comment:注释对象
2.DOM操作的API
要想通过DOM操作网页,主要有两个步骤:
想操作哪个标签,就获取哪个标签对象:Element
通过Element对象,操作标签的属性、内容、或样式
操作标签的属性
操作标签的属性很简单,通常是:
获取属性值:let v = 标签对象.属性名
设置属性值:标签对象.属性名 = 值
操作标签的内容
所谓标签的内容,就是开始标签和结束标签中间的部分。例如:<div> 这里是标签的内容 </div>
获取标签内容:let v = 标签对象.innerHTML
设置标签内容:标签对象.innerHTML = "新内容"
,会把标签里旧内容覆盖掉
- <html>
- <head>
- <title>获取标签</title>
- </head>
- <body>
- 帐号:<input type="text" name="username" id="username" class="item"> <br>
- 密码:<input type="password" name="password" class="item"> <br>
- 性别:<input type="radio" name="gender" value="male">男
- <input type="radio" name="gender" value="female">女 <br>
-
- <script>
- //根据id获取标签:
- let usernameInput = document.getElementById("username");
- console.log(usernameInput);
-
- //根据tagName获取标签:
- let inputArray = document.getElementsByTagName("input");
- console.log(inputArray);
-
- //根据name属性值获取标签:
- let genderRadios = document.getElementsByName("gender");
- console.log(genderRadios);
-
- //根据class属性值获取标签:
- let items = document.getElementsByClassName("item");
- console.log(items);
- </script>
- </body>
- </html>
-
-
- --------------------
- <html>
- <head>
- <title>操作属性</title>
- </head>
- <body>
- <input type="password" id="pwd">
- <input type="button" value="查看密码" onmousedown="showPwd()" onmouseup="hidePwd()">
-
- <script>
- function showPwd(){
- document.getElementById("pwd").type="text";
- }
- function hidePwd(){
- document.getElementById("pwd").type="password";
- }
- </script>
- </body>
- </html>
-
-
- ----------------------
- <html>
- <head>
- <title>操作标签内容</title>
- </head>
- <body>
- <div id="d1">
- hello
- </div>
-
- <script>
- let d1 = document.getElementById("d1");
- console.log(d1.innerHTML);
-
- d1.innerHTML = "JavaScript";
- </script>
- </body>
- </html>
8.案例全选全消
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- table {
- width: 500px;
- margin: 0 auto;
- border-collapse: collapse;
- }
-
- td, th {
- border: 1px solid blue;
- text-align: center;
- }
-
- </style>
- </head>
- <body>
- <table>
- <tr>
- <th style="width:100px;">
- <input type="checkbox" id="checkall" title="全选/全消" onclick="check()" />
- <input type="button" value="反选" onclick="inverse()">
- </th>
- <th>学号</th>
- <th>姓名</th>
- <th>年龄</th>
- </tr>
- <tr>
- <td>
- <input type="checkbox" class="item"/>
- </td>
- <td>1</td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td>
- <input type="checkbox" class="item"/>
- </td>
- <td>2</td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td>
- <input type="checkbox" class="item"/>
- </td>
- <td>3</td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td>
- <input type="checkbox" class="item"/>
- </td>
- <td>4</td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td>
- <input type="checkbox" class="item"/>
- </td>
- <td>5</td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td>
- <input type="checkbox" class="item"/>
- </td>
- <td>6</td>
- <td></td>
- <td></td>
- </tr>
- </table>
-
- <!--
- 需求:
- 点击checkall的时候,如果checkall是选中状态,设置所有的item都设置为选中状态;
- 点击checkall的时候,如果checkall是未选中状态,设置所有的item都设置为未选中状态;
- -->
- <script>
- function check(){
- //checked是一个true或fasle状态,v是true或false
- //1. 先获取checkall的状态:选中、取消
- let v = document.getElementById("checkall").checked;
-
- //2. 把checkall的状态设置给所有的item
- let items = document.getElementsByClassName("item");
- for(let i=0; i<items.length; i++){
- items[i].checked = v;
- }
- }
-
- /**
- * 反选:
- * 思路1:获取所有的item,循环遍历每一个,获取选中状态取反
- * 思路2:获取所有的item,循环遍历每一个,模拟一次点击操作
- */
- function inverse(){
- let items = document.getElementsByClassName("item");
- for(let i=0; i<items.length; i++){
- items[i].checked = !items[i].checked;
- }
- }
- </script>
- </body>
- </html>
9.JS对象手册
我们这是学入门和一些常用的属性,很多还是用要查
我们可以打开W3school在线学习文档,来到首页,在左侧栏找到浏览器脚本下的JavaScript,如下图所示:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。