教程网址:https://www.w3school.com.cn/

https://www.liaoxuefeng.com/

https://developer.mozilla.org/zh-CN/docs/Learn

前端项目、教学:https://www.bootcdn.cn/

菜鸟教程

1. 什么是JavaScript

1.1、 概述

JavaScript是一门世界上

最流行脚本语言

Java 和JavaScript

一个合格的后端人员,必须精通JavaScript。因为很有可能进公司之后,要写很多JavaScript语言。

1.2、历史

ECMAScript 它可以理解为是JavaScript的一个标准

最新版本已经到ES6了

但是大部分浏览器还只停留在支持es6代码上!

开发环境 —-线上环境,版本不一致。 webpack等工具解决问题

2. 快速入门

2.1 引入JavaScript

  • 外部导入文件

<script src="./xx.js"></script>
  • 内部标签使用

    <script> 
    alert("hello world");
    </script>
    

2.2 基本语法入门

  1. 定义变量

    var num = 1;

     

  2. 条件控制

    if(1>2){
       if(2>2){
           
      }else if(2>3){
           
      }
       alert("false")
    }

     

  3. 浏览器控制台输入js代码。

    alert("这里是console控制台")
    undefined
    console.log("在浏览器控制台打印变量")
    VM285:1 在浏览器控制台打印变量

     

  4. 在浏览器控制台打断点。点 sources ,在对应的js文件下,在某一行打断点

     

2.3 数据类型

数值、文本、图形、音频、视频……

  • number

js 不区分小数和整数,Number

123 //整数123
123.1 //浮点数123.1
1.12e3 //科学计数法
-99 //负数
NaN  //not a number
Infinity // 表示无限大
  • 字符串

‘abc’ ‘bcd’

  • 布尔值

true 、false

  • 逻辑运算

    &&
       
     ||
       
      !
  • 比较运算符

 

=
== 等于(类型不一样,值一样,也会判断为true)
=== 绝对等于(类型一样,值也一样)

这是js的一个缺陷,坚持不要使用 == 比较

特例:

  • NaN与所有的数值都不相等,包括自己

  • 只能通过isNaN(NaN) 来判断是否是NaN

浮点数

1/3 === (1-2/3)   
false

尽量避免使用浮点数进行运算,存在精度问题

java bigdicimal

null 和undefined

  • null 空

  • undefined 未定义

    数组

java:一系列相同类型的数值的集合

javaScript:中可以是不同类型

var arr = [1,2,3,4,'hello',null,true]

数组下标越界会提示 undefined

  • 对象

对象是大括号,数组是中括号

var person = {
    name = "lmq",
    age = 24,
    tags:['职工','js','web','sql','....']//每个属性之间以逗号隔开
}
访问对象属性
person.name
person.age

2.4 严格检查模式

‘use strict’: 严格检查模式,预防JavaScript的随意性导致产生的一些问题

必须写在JavaScript的第一行

局部变量建议都使用let去定义~

<script>
    'use strict';
	let i = 1;
  </script>

3. 数据类型

3.1 字符串

  1. 正常字符串我们使用 单引号、或者双引号包裹

  2. 注意转义字符

    \'
    \n
    \t
    \u4e2d     格式 \u####  unicode字符
    \x41  Ascll字符
    var str = "李梦齐"
    for(var i = 0; i < 3; i++){
        console.log(str.charCodeAt(i))}
    VM2529:3 26446
    VM2529:3 26790
    VM2529:3 40784
    undefined
    for(let i = 0;i < 3;i++){
        console.log(String.fromCharCode(str.charCodeAt(i)))}
    VM2745:2 李
    VM2745:2 梦
    VM2745:2 齐

     

  3. 多行字符串编写

·发发
发的发
发发
发啊·
  1. 模板字符串

    //tab 上面   esc键下面
    let name = "life"
    let age = "the whole life"
    
    let msg = `what should you do,in your ${name}`
  2. 字符串长度

    str.length
    
  3. 字符串可变性,不可变

    var student = "student"
    undefined
    console.log(student.substring(1));
    VM424:1 tudent
    undefined
    console.log(student[0])
    VM545:1 s
    undefined
    student[0] = "a"
    'a'
    console.log(student[0])
    s

     

  4. 大小写转换

console.log(student.toUpperCase())
STUDENT
  1. 获取字符串下标

    console.log(student.indexOf("s"))
     0
  2. 截取字符串

    console.log(student.substring(0,5));
    stude
    [)   包头不包尾
    0 1 2 3 4 

3.2 数组

array 包含任意的数据类型

  1. 遍历

    var array = [1,2,3,4,5]
    undefined
    console.log(array)
    VM1243:1 (5) [1, 2, 3, 4, 5]
    var array = [3,4,5]
    for(var x of array){
        console.log(x)
    }
    //通过for of 遍历数组的元素值
    // for in 输入的x是下边

     

  2. 长度 array.length

    长度可变

    假如给array.length 赋值,数组大小就会发生变化,如果赋值长度小于现有数据元素长度,现有元素会丢失

  3. 可重新赋值

    array[0] = 8;console.log(array)
    VM1391:1 (5) [8, 2, 3, 4, 5]
  4. 通过元素获得索引位置

array.indexOf(5)
4
  1. slice() 截取 Array 的一部分,返回一个新数组。类似于string中的substring()

    arr.slice(1,5)
  2. push ,pop

    array.push("1")
    6
    console.log(array)
    VM2925:1 (6) [8, 2, 3, 4, 5, '1']
    undefined
    array.pop("1")
    '1'
    console.log(array)
    VM3007:1 (5) [8, 2, 3, 4, 5]

    pop() 无参函数,指弹出尾部元素

    7.unshift(), shift() 头部

    unshift: 压入头部
    shift:弹出头部元素

    8.排序 sort()

    9.元素反转, reverse()

    ["a","b","c"]
    array.reverse()
    ["c","b","a"]
    1. concat()

      不会修改原数组,只会返回拼接后的

      array.concat([9,99,999])
      (8) [8, 2, 3, 4, 5, 9, 99, 999]
      array
      (5) [8, 2, 3, 4, 5]
    2. 连接符 join

      打印拼接数组,使用指定的字符串拼接

      array
      (5) [8, 2, 3, 4, 5]
      array.join('~')
      '8~2~3~4~5'
    3. 多维数组

      var array = [[1,2],[3,4],[5,6]]
      array[0][1]
      2

       

3.3 对象

若干个键值对

var 对象名 = {
    属性名 : 属性值,
    属性名 : 属性值,
    .
    .
    .
    属性名 : 属性值
}

var person = {
    name : "李梦齐",
    age:24,
    email:"lmq2458394364@163.com",
    score:75
}

js中对象,{….}表示一个对象,键值对描述属性xxxx:xxxx,多属性之间使用逗号隔开最后一个属性不加逗号!

  1. 对象赋值

console.log(person.name)
VM3506:1 李梦齐
undefined
person.name="帅比"
'帅比'
console.log(person)
VM3662:1 {name: '帅比', age: 24, email: 'lmq2458394364@163.com', score: 75}
  1. 使用一个不存在的对象属性,不会报错,提示undefined

    person.money
    undefined

     

  2. 动态的删减属性,通过delete 删除对象属性

  3. 动态的添加

    person.haha = "哈哈"
    '哈哈'
    console.log(person)
    VM3855:1 {name: '帅比', age: 24, email: 'lmq2458394364@163.com', score: 75, haha: '哈哈'}
  4. 判断属性值是否在这个对象中! xxx in xxxx

    'age' in person
    true
    //继承
    'toString' in person
    true

     

  5. 判断一个属性是否是这个对象自身拥有的hasOwnProperty()

    person.hasOwnProperty('tostring')
    false
    person.hasOwnProperty("age")
    true

3.4 流程控制

if判断

while循环

while(true){
   alert("2022年光棍节")
}

 

for循环

for(let i = 0; i < 100;i++){
    console.log(i)
}

数组循环

age = [1,2,3,4,5,6,7]
for(var num in age){
    console.log(age[num])
}//num是索引

3.5 Map和Set

Map

var map = new Map([['tom',100],['jack',90],['lucy',80]])
var name = map.get('tom')
console.log(name)
map.set('nacy',70)
map.delete("tom")
console.log(map)

Set:无序不重复集合

var set = new Set([3,1,2,2,1,2]) //set可以去重
set.add(4)
console.log(set)
set.delete(1)
set.has(3) //是否包含某个元素

3.6 iterator

使用iterator 遍历迭代Map和set。

遍历map

var map = new Map([["tom",100],["jack",90],["haha",80]])
for(let x of map){
    console.log(x)
}

遍历set

let set2 = new Set([3,4,5])
    for(let x of set2){
        console.log(x)
}

forEach

var age = [12,3,12,2,12,3,12,31,21]
//函数
age.forEach(function(value)){
            console.log(value)
            }

4.函数及面向对象

4.1 函数定义及变量作用域

定义方式一

function abs(x){
    if(x >= 0){
        return x;
    }else{
        return -x;
    }
}

一旦执行到return 代表函数结束,返回结果!

如果没有执行return , 函数执行完也会返回结果:NaN或者undefined

定义方式二

var abc = function(){
    if(x >= 0){
        return x;
    }else{
        return -x;
    }
}

4.2 调用函数

abs(10)
abs(-10)

参数问题:Javascript 调用方法可以传任意参数,也可以不传参数,不报错

可以手动抛出异常

var abs = function(x){
    //手动抛出异常来判断
    if(typeof x!== 'number'){
        throw 'Not a Number';
    }
    if(x >= 0){
            return x;
        }else{
            return -x;
        }
}

arguments

arguments 是javascript 免费赠送(自带)的一个关键字

它代表传递进来的所有的参数,是一个数组,

var abs = function abs(x){
    console.log("x=>"+x)
    for( var i = 0;i < arguments.length;i++){
        console.log(arguments[i])
    }
    if(x >= 0){
        return x;
    }else{
        return -x;
    }
}

4.3 方法多个参数的问题

问题:arguments 包含所有的参数,我们有时候想使用多余的参数来进行附加操作,需要排除已有的参数~

rest

ES6引入的新特性,获取除了已经定义的参数之外的所有参数

var aaa = function(a,b,...rest){
    console.log("a=>"+a)
    console.log("b=>"+b)
    console.log("rest=>"+rest)
}


aaa(100,200,300,400,500)
index.html:23 a=>100
index.html:24 b=>200
index.html:25 rest=>300,400,500
undefined

rest 参数只能写在最后面,必须用…标识

4.4 变量作用域

在javascript中,var 定义的变量实际是有作用域的

假设在函数体中声明,则在函数体外不可使用 (非要想使用的话,可以研究使用闭包)

//'use strict'
var aa = function(){
    var x = 1;
    x += 1;
}
console.log(x)
Uncaught ReferenceError: x is not defined
    at 变量的作用域.html:16:21

内部函数可以访问外部函数的成员,反之不行

假设,内部函数变量和外部函数的变量,重名!

function qj(){
    var x = 1;
    function qj2(){
        var x = 'a'
 		console.log('inner=>'+a)//inner=>a
    }
    console.log('outer=>'+x)//outer=>1
}

提升变量的作用域

 

function abc(){
    var x = 'x' + y;
    console.log(x);
    var y = 'y'
    }
//输出:xundefined

说明:js执行引擎,自动提升了y的声明,但是不会提升y的赋值。但是声明y 这个语句还是要声明的,即使写在后面,不写声明y是会报错的。

全局函数

类似 类变量

var x = 1;
function f(){
    console.log(x)
}
f();
console.log(x)

全局对象window

var x = "xx"
alert(x)
alert(window.x)

alert() 函数本身也是window 对象内的一个方法

Javascript 实际上只有一个全局作用域,任何变量(函数可以视为变量),假设没有函数范围内找到,就会向外查找,如果在全局作用域都没有找到,就会提示未定义

规范

由于我们所有的全局变量都会绑定到window上,如果不同的js文件,使用了相同的全局变量,冲突 -> 如何能够减少冲突

// 唯一全局变量
var kuangshen = {}
//定义全局变量
kuangshen.name = 'kuangshen';
kuangshen.add = function(){
    return a + b;
}

把自己的代码,全部放到自己定义的命名空间中,防止自己定义的变量和window自带的变量重名

JQuery

局部作用域 let

function aaaa(){
    for(var i = 0;i < 100;i++){
        console.log(i)
    }
    console.log(i)//i 出了for循环,还可以使用,输出 101
}

ES6 引出let关键字

function aaaa(){
    for(let i = 0;i < 100;i++){
        console.log(i)
    }
    console.log(i)//i 出了for循环,还可以使用,输出 101
}

 

建议都是用 let 去定义 局部作用域的变量 es6环境

const 常量

在ES6之前,定义常量:约定,只要用全部大写字母声明的变量

var PI = '3.14'
console.log(PI)
PI = '213'
console.log(PI) //213

在ES6 引入了常量关键字,const 来定义常量

4.5 方法

定义方法

方法就是把函数放在对象里面,对象只有两个东西:属性和方法

对象的函数叫做方法

var limengqi = {
    name : "limengqi",
    height : "170",
    weight : "140",
    birth : 1998,
    age : function(){
        return new Date().getFullYear() - this.birth;
    }
}

控制台:
limengqi.age()
24
//属性 
limengqi.name
//方法
limengqi.age()

this. 代表什么? 拆开上面代码看看~

function getAge(){
        return new Date().getFullYear() - this.birth;
    }
var limengqi = {
    name : "limengqi",
    height : "170",
    weight : "140",
    birth : 1998,
    age : getAge()
}

limengqi2.age()
24

apply

在js中可以控制this的指向

getAge.apply(limengqi2,[])// this指向了limengqi2对象,并且参数是空[]

 

 

  1. 闭包

  2. 箭头函数(新特性)

  3. 创建对象

  4. class继承

  5. 原型链继承

5.常用对象

标准对象

typeof 123
'number'
typeof '12'
'string'
typeof limengqi
'object'
typeof window
'object'
typeof true
'boolean'
typeof Math.abs
'function'

 

5.1Date

var now = new Date();
now.getFullYear();//年
now.getMonth();//月
now.getDate();//日
now.getDay();//星期几
now.getMinutes();//分
now.getHours();//时
now.getSeconds();//秒
now.getTime();//时间戳  全世界统一 1970 1.1 0:00 到现在的毫秒数
//把时间戳转为时间
new DateTime(时间戳);

 

5.2 JSON

json 是什么

早期,所有的数据传输习惯使用xml文件!

  • JSON 是一种轻量级的数据交换格式

  • 简洁和清晰的层次结构 使得JSON成为理想的数据交换语言

  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率

在JavaScript 中一切皆对象,任何js支持的类型都可以用JSON来表示

格式:

  • 对象都用{}

  • 数组都用[]

  • 所有的键值对都是用key:value

JSON字符串和JS对象的转化

var user = {
    name : "limengqi",
    age : "24",
    gender : "male"
}
//对象转化JSON字符串
var jsonUser = JSON.stringify(user);

//JSON字符串 转化为对象
var userJson = JSON.parse(jsonUser);

搞清楚,JSON和JS对象的区别

var obj = {a:'hello',b:'hellob'}//js对象
var json = '{"a":'hello',"b":'hellob'}' //json

5.3 AJax

  • 原生JS写法 xhr 异步请求

  • JQuery 封装好的 方法

  • axios请求

6.面向对象编程

原型对象

简单理解为 java的继承

var person = {
    name : "person",
    age : 24,
    gender : "male",
    action : function(){
        console.log(this.name + "  run...")
    }
}
var bird = {
    name : "bird",
    action : function(){
        console.log(this.name + "  fly...")
    }
}

var limengqi = {
    name : "limengqi",

}
limengqi.__proto__ = person;
limengqi.action();
//limengqi.__proto__ = bird;
//limengqi.action();

 

结果:

limengqi  run...
console.log(limengqi)
VM101:1 {name: 'limengqi'}name: "limengqi"[[Prototype]]: Objectaction: ƒ ()age: 24gender: "male"name: "person"[[Prototype]]: Object

 

class 继承

class 关键字,是在es6引入的

JS中定义一个类

function Animal(name){
   this.name = name; 
}
Animal.prototype.sayHi = function(){
    console.log('hello '+this.name)
}

var animal = new Animal()
undefined
animal.name = 'momo'
'momo'
animal.sayHi()
hello momo

使用class 定义一个类

constructor() 相当于构造方法

class Animal {
  constructor(name) {
      this.name = name;
  }
  sayHi() {
    console.log(`hello,${this.name}`);
  }
}
Animal.prototype.constructor === Animal; // true
let dog = new Animal('dog');
dog.sayHi(); // hello, dog

继承 extends

class Dog extends Animal{
    constructor(name,sound){
        this.name = name;
        this.sound = sound;
    };
    bark(){
        consolo.log(this.sound)
    }
}
let wangcai = new Dog('旺财','汪汪汪')
wangcai.bark();//referenceError : Must call super constructor in derived class before accessing 'this' or returning from derived constructor
class Dog extends Animal {
  constructor(name, sound) {
      super(name);//super指调用父类的构造方法
      this.sound = sound;
  };
  bark() {
    console.log(this.sound);
  }
}
let wangcai = new Dog('旺财', '喵喵喵');
wangcai.bark(); // 喵喵喵

原型链

__ proto__:

 

7.操作Bom元素

浏览器介绍

JavaScript 和浏览器关系

JavaScript的诞生就是为了能够让他在浏览器中运行!

BOM: 浏览器 对象模型

浏览器内核

  • IE6-11

  • Chrome

  • Safari

  • FireFox

     

三方(可切换内核)

  • QQ浏览器

  • 360浏览器

  • 谷歌浏览器

  1. window

    window 代表浏览器窗口

    window.alert(1)
    window.alert(window.innerHeight)
    window.alert(window.outerWidth)

     

  2. navigator

    封装了浏览器的信息

    navigator.appName
    'Netscape'
    navigator.appVersion
    '5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
    navigator.userAgent
    'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
    navigator.platform
    'Win32'

    大多数时候我们不会使用navigator 对象,因为会被人为修改

    不建议使用这些属性来判断和编写代码

  3. screen

    屏幕属性

    screen.width
    414
    screen.height
    896

     

  4. location

代表当前页面的URL信息

location
protocol: 'https:', 
host: 'www.baidu.com'
hostname: "www.baidu.com"
href: "https://www.baidu.com/"
origin: "https://www.baidu.com"
reload: ƒ reload()//刷新网页
//设置新的地址
location.assign('https://blog.kuangstudy.com/')

 

  1. Document

document代表当前的页面,HTML DOM 文档树

document.title
""
document.getElementById("")

获取cookie

document.cookie

劫持cookie

www.taobao.com

<script></script>
<!--恶意人员:获取你的cookie上传到他的服务器-->

服务器端可以设置cookie:httpOnly

7.6 History

代表浏览器的历史记录

history.back()
history.forward()

 

  1. 操作表单

  2. 操作文件

8.操作Dom元素

核心

整个浏览器网页就是一个Dom树形结构

  • 更新:Dom节点

  • 遍历Dom节点:得到Dom节点

  • 删除:删除Dom节点

  • 添加:添加Dom节点

要操作一个Dom节点,就必须获得这个Dom节点

获得Dom节点

<div id = "father">
    <h1>h1标题</h1>
<p id="p1">p1</p>
<p class="p2">p2</p>
</div>
<script>
    //对应css选择器
    var h1 = document.getElementsByTagName("h1");
var p1 = document.getElementsByClassName("p2")
var p2 = document.getElementById("p1")
var father = document.getElementById("father")

var children = father.children

这是原生代码,之后我们尽量都用JQuery()

更新节点

操作文本

  • p2.innerText = “p2文本” 修改文本的值

  • p2.innerHTML = “< strong>p2文本</ strong>” 比inner Text多个特点就是能解析HTML标签

操作CSS

  • p2.style.color = “red”

  • p2.style.fontSize = “10px”

  • p2.style.padding = “2em”

删除节点

删除节点的步骤:

  1. 先获取父节点,再通过父节点删除自己

father.removeChild(father.children[0])

插入节点

我们获得了某个Dom节点,假设这个dom节点是空的,我们通过innerHTMLji就可以增加一个元素,但是这个DOM节点已经存在元素了,我们就不能这么干了!会产生覆盖

追加

<p id="js">JAVAScript</p>
<div id="list">
    <p id="se">JAVASE</p>
<p id="ee">JAVAEE</p>
<p id="me">JAVAME</p>
</div>
<script>
    var js = document.getElementById("js")
var list = document.getElementById("list")

</script>
list.appendChild(js);

创建节点

var newP = document.createElement("p")//创建一个p标签
newP.id = "newP"
newP.innerText = "新的p标签"

创建动态节点

var script = document.createElement('script')
myScript.setAttribute('type','text/javascript');

设置body的样式

var body = document.getElementsByTagName('body')
undefined
body[0].style.backgroundColor = 'blue'
//body[0].setAttribute('style','background-color:wheat');

②引入css样式

var myStyle = document.createElement("style");
myStyle.setAttribute('type','text/css')
myStyle.innerHTML = 'body{background-color:chartreuse}'
var head = document.getElementsByTagName('head')[0];
head.appendChild(myStyle);

insert

<div id="list">
    <p id="se">JAVASE</p>
	<p id="ee">JAVAEE</p>
	<p id="me">JAVAME</p>
</div>
<script>
    var ee = document.getElementById('ee')
    var js = document.getElementById('js')
    var list = document.getElementById('list')
    //要包含的节点 insertBefore(newNode,targetNode)
    list.insertBefore(js,ee);
</script>

9. 操作表单

form 表单 DOM树

  • 文本框 text

  • 下拉框 select 选项 option

  • 单选框 radio

  • 多选框 checkbox

  • 隐藏域 hidden

  • 密码框 password

表单的目的:提交信息

获得要提交的信息

form

<form action="">
    <span>用户名:</span><input type="text" id="username">
</form>
<script>
    var username = document.getElementById('username');
    username.value   //获取表单输入的值
    '1321321'
    username.value = '321312'   //给表单的输入框赋值
    '321312'
    
    
</script>

 

<!-- 单选框和多选框的值就是定义好的value -->
<P>
    <span>性别:</span>
    <input type="radio" name="gender" value="男">男
    <input type="radio" name="gender"  value="女">女
</P>
<p>
    <input type="submit">
</p>
<script>
    var gender = document.getElementsByName('gender')[0]
    //对于单选框、多选框 。gender.value 返回的是标签的value值,而不能返回是否被选中
    //可通过gender.checked
    gender.checked   
    false   
    gender.checked
    true
</script>

md5 加密

<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>Document</title>
    <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
</head>
<body>
    <form action="#" method="post">
        <p>
            <span>用户名:</span><input type="text" id="username" name="username">
        </p>
        <p>
            <span>密码:</span> <input type="password" id="password" name="password">
        </p>
        <button type="submit" onclick="aaa()">提交</button>
    </form>
    <script>
        function aaa(){
            var username = document.getElementById("username")
            var password = document.getElementById("password")
            password.value = md5(password.value)//加密
            console.log(password.value)
        }
    </script>
</body>

 

表单校验: 通过 表单 onsubmit 属性,如果校验不通过不跳转

<form action="https://www.baidu.com" method="post" onsubmit="return aaa()">
    <p>
        <span>用户名:</span><input type="text" id="username" name="username">
    </p>
    <p>
        <span>密码:</span> <input type="password" id="input-password">
    </p>
    <input type="hidden" id="md5-Password" name="password">
    <button type="submit">提交</button>
</form>
<script>
    function aaa(){
        var username = document.getElementById("username")
        var inputPassword = document.getElementById("input-password")
        var md5Password = document.getElementById("md5-Password")
        md5Password.value = md5(inputPassword.value)//解决提交时密码变长(加密后赋值给 密码的input标签)
        console.log(password.value)
        return false;
    }
</script>

10. jQuery

jQuery 库,里面存在大量的JavaScript 函数

获取jQuery

官网:www.jQuery.com

文档:https://jquery.cuishifeng.cn/

$(selector).action()

<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>Document</title>
    <!--cdn 在线的 -->
    <!-- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script> -->
    <!-- 本地的 -->
    <script src="./lib/jquery-3.6.1.js"></script>
</head>
<body>
    <a href="#" id="test-jquery">a标签</a>
    <script>
        //格式: $(css选择器).action()
        $('#test-jquery').click(function(){
            alert('欢迎使用JQuery')
        })
    </script>
</body>

选择器

<script src="./lib/jquery-3.6.1.js">
    //原生js选择器
    document.getElementById()//id
    document.getElementsByTagName() //标签
    document.getElementsByClassName  //类

    //jQuery   css中的选择器
    $('p').click()  //标签选择器
    $('#id').click()  //id选择器
    $('.class').click()  //类选择器

</script>

文档工具站: https://jquery.cuishifeng.cn/

 

事件

鼠标事件,键盘事件、其他事件

<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>Document</title>
    <script src="./lib/jquery-3.6.1.js"></script>
</head>
   <style>
     #divMove{
        width:500px;
        height: 500px;
        border:1px solid red;
    }
   </style>
<body>
    <!-- 获取鼠标当前坐标 -->
    mouse: <span id="mouseMove"></span>
    <div id="divMove">
        在这里移动鼠标试试
    </div>
    
    <script>
        //当网页加载完毕之后,相应事件
        $(document).ready(function(){

        })
        //简化
        $(function(){
            $('#divMove').mousemove(function(e){
            //alert(11)
            $('#mouseMove').text('x:'+e.pageX + '  y:'+e.pageY)
        })
        })
        
    </script>
</body>

操作DOM

节点文本操作

<UL ID="test-ul">
    <li class="js">JAVASE</li>
    <li name="python">python</li>
</UL>
<script>
    var content = $('#test-ul li[name=python]').html()//获取值
    $('#test-ul li[name=python]').html('徐秉龙');//设置值
</script>

css操作

$('#test-ul li[name=python]').css({'color':'red'})

隐藏节点

$('#test-ul li[name=python]').hide()
x $('#test-ul li[name=python]').css({'display':'none'})

显示隐藏切换

$('#test-ul li[name=python]').toggle()

window

$(window).width()
$(document).height()

 

前端学习技巧

  1. 看源码、网页源码、源码之家小游戏源码。看JQuery源码

  2. 扒别人写好的网页。把没用的删掉,html、css。或者全部下载下来,本地启动再修改看效果

 

elementUI

ANT-design

 

2022/11/24 学习js暂时结束

学了很多基础,但是觉得离公司里的前端开发还有很多东西要学习、练习…..

笔记来源:bilibili 遇见狂神说 视频

版权声明:本文为勇敢面对20201106原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liveforwhat/p/16923092.html