目录
JavaScript
主要给HTML网页增加动态功能
通常的JS是运行在浏览器环境下的,是由浏览器解释执行的,可以控制页面
JS分两种模型:
DOM:文档对象模型,document
BOM:浏览器对象模型,window
nodejs:运行在计算机环境下,不能操作BOM、DOM,但是它可以操作文件,能操作数据库,实际上是一种后端技术.
Chrome解释器叫V8
node解释器也叫V8
苹果解释器:JavaScriptCore
EcmaScript (ES):实际上是一种规范、语法
JavaScript (JS):是具体的实现,能干活的
ES5 ES6(2022正在流行) ES7 ......语法
JS基本上是Web前端核心!!!
了解前端一定学好JS
JS使用
JS底层
JS解析过程
JS优化
JS只要放在html文件中就好使,在浏览器中写都行,只要有浏览器就能运行
但一般写在body标签的最后部分
因为页面的加载顺序是从上到下的
JS是用来控制页面的显示方式的,需要等待页面加载完成,再执行JS
推荐外部引入的方式:
document.write("我是外面引入的js")
- 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>Documenttitle>
- head>
-
- <body>
- <h1>我是H1h1>
- <script src="./js/my.js">
- // 向body打印输出
- document.write("123")
- script>
- body>
-
- html>
自动类型推断 弱类型
1.数字类型 number
2.字符串类型 string
3.布尔类型 boolean
4.null 空。定义了,为空
5.undefined 没有定义
6.NaN 非数字
7.数组
8.对象
- 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>Documenttitle>
- head>
- <body>
- <script>
- var v1 = 10;
- var v2 = 1.5;
- var v3 = "你好";
- var v4 = '我好';
- var v5 = true;
- var v6 = null;
- // v7未定义
- // document.write(v7)
- // 数组
- var v7 = [1,2,3,4,5];
- // 对象
- var v8 = {
- "username" : "admin",
- "password" : "123456",
- "id" : 1001
- };
- document.write(v8.username);
- script>
- body>
- html>
- 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>Documenttitle>
- head>
- <body>
- <script>
- // 声明变量可以覆盖
- // var num = 1;
- // var num = 2;
- // document.write(num)
-
- // 新的声明变量的关键字:let不能重新声明
- // let num = 1;
- // num = 2;
- // document.write(num);
-
- // 声明常量的关键字,const,不能重新赋值、声明
- const num = 1;
- // num = 2;
- document.write(num);
- script>
- body>
- html>
Array()是一个函数,返回值就是一个空数组
JS里没有“方法”这个概念,叫做函数
JS里的方法不是java里的方法,JS里的函数相当于java里的方法
- 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>Documenttitle>
- head>
- <body>
- <script>
- // let arr = new Array();
- // Array(),在JS中函数可以当类用
-
- // 可以理解为JS里的数组就是java中的集合
- let arr = [1,2,3,4,5]
-
- // JS中数组没有下标越界,中间跳过的值为undefined
- arr[100] = 10;
-
- // 数组中可以写标签:例:换行
- document.write(arr + "
"); - document.write(arr.length);
- script>
- body>
- html>
可有参数列表,参数可以有多个
- 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>Documenttitle>
- head>
- <body>
- <script>
- function plus(a,b) {
- let a = 1;
- let b = 2;
- // console.log(a + b);
-
- // 返回值
- // return的作用:可以终止方法的执行
- return a + b;
- console.log(123);
- }
-
- // 调用函数
- console.log(plus(100,2,3,4,1,2));
- script>
- body>
- html>
- 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>Documenttitle>
- head>
- <body>
- <script>
-
- // Array()返回一个空数组
- // Object()返回一个空对象
- // let obj = new Object();
-
- // 相当于定义一个类
- function User(name){
- this.name = name;
- }
-
-
- // 创建了一个user对象
- // 之前定义的this.name就是对象的属性
- // 现在的user对象中有一个name属性,值为张三
- let user = new User("张三");
- console.log(user.name);
-
- let obj = Object();
- // JS对象的属性
- obj.name = "李四";
- obj.age = 30;
-
-
- // JS对象的方法
- obj.eat = function (){
- console.log("我正在吃东西!");
- }
-
-
- // 对象调方法
- obj.eat();
-
- // json串
- let teacher = {
- name : "王五",
- age : 35,
- drank: function() {
- console.log("我正在喝酒!!");
- }
- }
- teacher.drank();
- console.log(teacher.name);
- script>
- body>
- html>
- 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>Documenttitle>
- head>
- <body>
- <script>
-
- /*
- 在JS中,if的条件
- 规定:0、null、undefined为false,非0、null、undefined为true
- */
- let a = 1;
- if(a = 2){
- console.log(a);
- console.log("哈哈哈");
- }else{
- console.log("嘿嘿嘿");
- }
- script>
- body>
- html>
- 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>Documenttitle>
- head>
- <body>
- <script>
-
- let arr = [1,2,3,4,5]
- for(let i = 0;i < arr.length;i++){
- console.log(arr[i]);
- }
- for(i in arr){
- console.log(arr[i]);
- }
-
- let student = {
- name : "小明",
- age : 10
- }
-
-
- // 遍历对象
- // console.log(studen[0]);
- for(attr in student){
- console.log(attr);
- console.log(student[attr]);
- }
-
-
- script>
- body>
- html>
Array()
- 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>Documenttitle>
- head>
- <body>
- <script>
- let arr1 = [1,2,3,4];
- let arr2 = [9,8,7,6];
-
- // 拼接数组
- console.log(arr1.concat(arr2));
-
- // 新增
- arr1.push(10);
-
- // 删除最后一个
- arr1.pop();
-
- // 删除第一个元素
- arr1.shift();
- console.log(arr1);
- script>
- body>
- html>
- 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>Documenttitle>
- head>
- <body>
- <script>
- let name = "你好";
-
- // 对字符串进行编码
- document.write(escape(name));
-
- let js = "alert('哈哈哈')";
-
-
- // 如果字符串是js代码,解析成代码运行
- document.write(eval(js));
-
-
- // isNaN是不是一个数字
- document.write(isNaN("哈哈"));
-
-
- // parseInt:转成整数
- // parseFloat:转成小数
-
-
- // 能除
- document.write(10/3)
-
-
- // Number()转成数字
- document.write(Number(11111));
-
-
- // 转成字符串
- document.write(String(123))
- script>
- body>
- html>
charAt
indexOf
lastIndexOf
replace
concat
match
substring
substr
toUpperCase
toLowerCase
random
ceil
floor
round
getDate(日)
getDay(星期)
getMonth
getYear
getHours
getMinutes
文档本身就是一个文档对象document
所有的HTML元素都是元素节点
所有的HTML属性都是属性节点
元素的文本就数文本节点
注释节点(一般不用)
- 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>Documenttitle>
- <style>
- .div1{
- color: aqua;
- }
- style>
- head>
- <body>
-
- // 根据ID属性获取元素节点
- // 通过ID获取到的节点是唯一一个节点
- let div = document.getElementById("div1");
-
-
- // 根据标签名获取节点
- // 通过标签获取到的节点是一堆节点
- document.getElementsByTagName("div");
- console.log(div[0]);
-
-
- // 根据class样式样式获取元素节点
- // 通过class样式获取到的节点是一堆节点
- let div1 = document.getElementsByClassName("div1");
- console.log(div[0]);
-
-
- // 新方式
- // querySelector找到和传入的选择器匹配的第一个元素节点
- // 返回值是一个元素节点
- let div2 = document.querySelector("div");
- console.log(div);
-
-
- // querySelectorAll找到和传入的选择器匹配的所有元素节点
- // 返回值是一堆元素节点
- let divs = document.querySelectorAll("div");
- console.log(divs[0]);
-
-
-
- let div = document.querySelector("div")
-
- // innerHTML可以获取HTML标签
- console.log(div.innerHTML);
-
-
- // innerText可以获取到文本
- console.log(div.innerText);
-
-
- //改变元素的内容
- let div2 = document.querySelector(".div2");
- div2.innerHTML = "<h1>我是div2里面的h1h1>"
- div2.innerText = "<h1>我是div2里面的h1h1>"
- script>
- body>
- html>
事件就是我们和HTML标签元素发生交互时产生的行为
onclick:单击事件
ondblclicl:双击事件
onblur:失去焦点
onfocus:得到焦点
onchange:改变事件
onload:加载事件(加载的时候干什么)
onmousemove:鼠标跟随事件(跟随鼠标的特效)
当设置了对应的事件之后会执行目标函数
- 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>事件title>
- head>
- <body onload="load()">
- <input type="text" onblur="valid()" onfocus="get()">
-
-
- <button type="button" onclick="jump('你好')">按钮button>
- <select onchange="change()">
- <option value="">吉林省option>
- <option value="">辽宁省option>
- select>
- <script>
-
- // 点击按钮就弹出一个弹窗
- function jump(){
- alert("按钮被点击了")
-
- }
- function valid(){
- console.log("失去了焦点。。。");
-
- }
- function get(){
- console.log("获得了焦点。。。");
-
- }
- function change(){
- console.log("发生了改变");
- }
- function load(){
- console.log("已经加载完毕");
- }
-
-
- script>
-
- body>
- html>
将一个按钮的点击事件设置成添加一个标签。
- 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>Documenttitle>
- <style>
- .mydiv{
- width: 200px;
- height: 200px;
- background-color: green;
- }
- style>
- head>
- <body>
-
- <button onclick="fun()">点我button>
-
- <div id="container">div>
-
- <script>
-
- function fun() {
-
- // 新建一个元素节点
- let myDiv = document.createElement("div");
-
- //给新加的div加样式
- myDiv.setAttribute("class","mydiv");
-
- // 开发中规范,找一个值,有id就用id
- let container = document.querySelector("#container");
-
- // 把新建的元素节点加入到指定位置
- // innerHTML或innerText赋值只能赋字符串
- // container.innerHTML = myDiv;
- container.append(myDiv);
- }
- script>
- body>
- html>
- 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>Documenttitle>
- head>
- <body>
-
- <button>按钮1button>
-
- <button onclick="del(this)">按钮2(删除自己)button>
-
- <script>
-
- function del(Obj){
- // 找到要删除的元素
- // let btn = document.querySelector("button");
- /* 元素.remove方法直接删除,
- 有多个按钮时,这种方法默认删除第一个
- */
- // btn.remove;
-
- //删除自己,需传参
- Obj.remove();
- }
-
- script>
- body>
- html>
- 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>Documenttitle>
- head>
- <body>
-
- <ul>
- <li>1li>
- <li>2li>
- <li>3li>
- <li>4li>
- ul>
-
- <button onclick="nothing()">清空列表按钮button>
-
- <button onclick="delone()">删除一行列表button>
-
- <script>
-
- function delone(){
- let ul = document.querySelector("ul");
- let lis = document.querySelectorAll("li");
- ul.removeChild(lis[0]);
- }
-
- function nothing(){
- // 清空ul列表
- let ul = document.querySelector("ul");
- ul.innerHTML = "";
- }
-
- script>
- body>
- html>