JavaScript学习笔记

JavaScript

1、概述

javaScript是一门脚本语言,他和java没半毛钱关系,有java二字就是为了蹭java热度。

现今最新版本已经到es6版本

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

开发环境–线上环境,版本不一致

2、快速入门

2.1、引入JavaScript

1、内部标签

<script>
//...
</script>

2、外部引入

xxx.js

....

在HTML中引入JavaScript

<script src="js/xxx.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript</title>

    <!-- scipt标签内,写JavaScript代码 -->
    <!--    <script>
            alert("hello word");
        </script>-->

    <!-- 外部引入 -->
    <!--注意:script标签,必须成对出现-->
    <script src="js/hello.js"></script>

    <!--不用显示定义type,默认就是text/javascript-->
    <script type="text/javascript">
        //...
    </script>

</head>
<body>


<!--这里也可以存放-->
</body>
</html>

2.2、基本语法入门

浏览器必备调试须知:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zfj8q4Sv-1594047839490)(E:\许浩文件备份\笔记\web\4S%O6SPGT15DDNZ87@K}[RV.png)]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script>
        // 1.定义变量    变量类型var    变量名 =变量值;
        var score = 65;
        // alert(name);
        // 2.条件控制
        if (score > 60 && score < 70) {
            alert("及格");
        } else if (score > 70 && score < 80) {
            alert("良好");
        } else {
            alert("优秀");
        }

        //console.log(score)  在浏览器的控制台打印变量! 相当于System.out.println

    </script>

</head>
<body>

</body>
</html>

2.3、数据类型

数值,文本,图形,音频,视频。。。

变量:不能以数字开头

js不区分小数和整数,Number

123 // 整数123
123.1 // 浮点数123.1
1.123e3 // 科学计数法
-99 // 负数
NaN // not a number
Infinity // 无限大

字符串

‘abc’ “abc”

布尔值

true false

逻辑运算

&&
||
!

比较运算符

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

注意:

  • 一般不使用==
  • NaN==NaN,这个与所有的数值不相等,包括自己
  • 只能通过.isNaN(NaN)来判断这个数是否是NaN

浮点数问题

console.log((1/3)==(1-2/3))		false

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

Math.abs(1/3-(1-2/3))<0.000001	true

null和undefined

  • null 空
  • undefined 未定义

数组

java的数组必须同类型,js不需要相同类型

// 保证代码的可读性,尽量使用[]
var arr = [1,true,null,"hello"];

new Array(1,true,null,"hello")

取数组下标:如果越界了就会显示:undefined

对象

对象是大括号,数组是中括号,属性之间用逗号隔开

var person = {
	name: "许浩",
	age: 19,
	tags: ["xh","yxx"]
}

取对象的值

person.name
person.age
person.tags[0]

2.4、严格检查模式strict

前提:IDEA支持ES6语法
‘use strict’;严格检查模式,预防JavaScript的随意性导致的一些问题
必须写在JavaScript的第一行
局部变量建议都使用let去定义

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--
    前提:IDEA支持ES6语法
    'use strict';严格检查模式,预防JavaScript的随意性导致的一些问题
    必须写在JavaScript的第一行
    局部变量建议都使用let去定义
    -->
    <script>
        'use strict';
        // 全局变量
        i = 1;
        var u = 1;
        // ES6中局部变量用 let 定义
        let o = 1;
    </script>
</head>
<body>

</body>
</html>

3、数据类型

3.1、字符串

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

2、注意转移字符 \

\'	打印'
"\n"	换行
"\t"	制表
"\u3e2d" 	\u#### Unicode字符
"\x41"	Ascll字符

3、多行字符串编写

//tab 上的引号键
var msg=
    `
hello
world
你
世界
`

4、模板字符串

// 字符串拼接
let name = "xuhao";
let msgs = `你好,${name}`;

5、字符串长度

str.length

6、字符串的可变性,不可变

在这里插入图片描述

7、大小写转换

student.toUpperCase()	//转换为大写
student.toLowerCase()	//转换为小写

8、获取字符下标

student.indexOf("a")

9、截取字符串

student.substring(1)	//从第一个字符串开始截取
student.substring(1,3)	//[1,3)

3.2、数组

Array可以包含任意数据类型

var arr=[1,2,3]

1、长度

arr.length

注意:如果给arr.length赋值,数组大小会发生变化,如果赋值小于原长度,数据就会缺失

2、indexOf

arr.indexof(2)

3、slice()

截取Array的一部分,返回一个新数组,类似于String中的subString

4、push() pop() --尾部

push():	压入到尾部
pop():	弹出尾部的一个元素

5、unshift() shift() --头部

unshift():	压入到头部
shift():	弹出头部的一个元素

6、排序 sort()

arr=["b","a"]
arr.sort()
arr=["a","b"]

7、元素反转 reverse()

arr=["b","a","d"]
arr.reverse()
arr=["d","a","b"]

8、拼接 concat()

arr.concat([1,2,3])
[1, 2, 3, 1, 2, 3]
arr
[1, 2, 3]

注意:concat()并没有修改数组,只是会返回一个新的字符串

9、连接符join

打印拼接数组,使用特点的字符串连接

arr=["a","b"]
arr.join("-")
"a-b"

10、多维数组

arr=[["a","b"],[1,2]]
arr[1][1]
2

3.3、对象

若干个键值对

JavaScript中所有的键都是字符串,值是任意对象

let|var 对象名 = {
	属性名:属性值,
    属性名:属性值,
    属性名:属性值
}
let person = {
    name: "xuhao",
    age: 3,
    email: "110@qq.com"
}

js中的对象,{…}表示一个对象,键值对描述属性xxx:xx,多个属性之间用“,”隔开,最后一个属性不加逗号

1、对象复制

person.name="yangxinxin"
yangxinxin
person.name
yangxinxin

2、使用一个不存在的对象属性,不会报错 undefined

person.js
undefined

3、动态的删减属性 delete

delete person.name
true

4、动态的添加属性

person.haha="js"
"js"
person
{name: "xuhao", age: 3, email: "110@qq.com", js: "js"}

5、判断属性值是否在这个对象中

"age" in person
true
//继承
true

6、判断一个属性是否是这个对象自身拥有的

person.hasOwnProperty("toString")
false
person.hasOwnProperty("age")
true

3.4、流程控制

if 判断

let age = 3;
if (age > 3) {
    alter("笑")
} else {
    alter("哭泣")
}

while循环

while (age<100){
    console.log(age);
}
do{
    console.log(age);
}while (age<100)

for循环

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

forEach循环

var age=[12,13,14,15,16];
age.forEach(function (value) {
    console.log(value)
})

for…in 循环

var age=[12,13,14,15,16];
for (var num in age){
    if(age.hasOwnProperty(num)){
        console.log(age[num]);
    }

3.5、Map和Set

ES6的新特性

Map:

// ES6
// 学生的成绩,学生的名字
// var names=["tom","jack"];
// var socres=[100,90];
// new Map();
// new Set();

var map = new Map([['tom', 100], ['jack', 90]]);
var score = map.get("tom");  // 通过key获得value
map.set("admin", 80);	// 设置值
map.delete("tom");	// 删除值

Set:无序不重复的集合

var set=new Set([1,2,3,4,4]);   // set可以去重
set.add(5); // 添加元素
set.delete(4);  // 删除元素
set.has(3); // 查看是否包含某个元素,包含则返回true

3.6、iterator

ES6新特性

遍历数组,使用for of可以遍历内容,使用for in可以遍历所有元素的下标

var arr=[3,4,5];
for (let x of arr){
    console.log(x);
}

遍历map

var map=new Map([["tom",19],["jack",20]]);
for (let x of map){
    console.log(x);
}

遍历set

var set=new Set([5,6,6,7]);
for (let x of set){
    console.log(x);
}

4、函数

4.1、定义函数

定义方式一

绝对值函数

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

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

如果没有执行return,函数执行完也会返回结果,结果就是undefined

定义方式二

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

调用函数

abs(10)	// 10
abs(-10)	// 10

参数问题:JavaScript的函数可以传任意个参数,也可以不传递参数

参数尽量是否存在的问题?

假设不存在参数,如何规避? --抛出异常

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

arguments

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

function abs(x) {

    for (let i = 0; i < arguments.length; i++) {
        console.log(arguments[i]);
    }

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

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

rest可变参数

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

function aa(a,b,...rest) {
    console.log("a->"+a);
    console.log("b->"+b);
    console.log(rest);
}

4.2、变量的作用域

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

假设在函数体中声明,则在函数体外不可以使用。

如果两个函数使用了相同的变量名,只要在函数内部,就不冲突。

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

假设内部函数变量和外部函数变量重名,则由内向外找,当内外存在重名的函数变量时,内部函数会屏蔽外部的函数变量,类似于**“就近原则”**。

提升变量的作用域

function fun() {
    var x="x"+y;
    console.log(x)
    var y="y";
}

fun()结果:xundefined

说明:JavaScript执行引擎,自动提升了y的声明,但是不会提升变量y的赋值

// fun2类似于fun
function fun2() {
    var y="y";
    var x="x"+y;
    console.log(x)
    y="y";
}

规范:所有变量的定义都放在函数的头部,便于代码维护

全局函数

全局变量

x = 1;

全局对象 window

// 全局对象
var x = "xxx";
alert(x);
alert(window.x);     // 默认所有的全局变量,都会自动绑定在window对象下

alert()这个函数本身也是一个window变量

var x = "xxx";

window.alert(x);

var old_alert = window.alert;

old_alert(x);

window.alert = function () {

}

// alert失效,相当于被上面覆盖了
window.alert(123);

//恢复
window.alert = old_alert;
window.alert(123);

JavaScript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用域范围内找到,就会向外查找,如果在全局作用域没有找到,则报错RefrenceError

规范

由于我们所有的全局变量都会绑定到我们的window上。如果不同的js文件,使用了相同的全局变量,则会产生冲突。

解决方法:

// 全局唯一变量
var xhkongjian = {};

// 定义全局变量
xhkongjian.name = "xuhao";
xhkongjian.add = function (a, b) {
    return a + b;
}

局部作用域 let

使用var定义的变量是全局变量

function aaa() {
    for (let i = 0; i < 10; i++) {
        console.log(i);
    }
    console.log(i+1);   // Uncaught ReferenceError
}

ES6 let关键字,可以解决局部作用域冲突的问题,建议使用let去定义局部作用域的变量

常量 const

ES6 引入常量关键字const

4.3、方法

定义方法

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

var xuhao = {
    name: "xuhao",
    birth: 2000,
    // 方法
    age: function () {
        // 今年-出生年
        var now = new Date().getFullYear();
        return now - this.birth;
    }
}
// 属性
xuhao.name
// 方法,一定要带()
xuhao.age()

this.代表什么?

this是无法指向的,是默认指向调用它的那个对象

function getAge() {
    // 今年-出生年
    var now = new Date().getFullYear();
    return now - this.birth;
}

var xuhao = {
    name: "xuhao",
    birth: 2000,
    // 方法
    age: getAge
}
// xuhao.age()  20
// getAge()	NaN this指的是window

apply

在js中可以控制this指向,相当于指针,感觉很像java里面的反射

getAge().apply(xuhao,[]);   // 两个参数,this指向的对象,传入的参数

5、内部对象

标准对象

typeof 123
"number"
typeof '123'
"string"
typeof []
"object"
typeof {}
"object"
typeof NaN
"number"
typeof true
"boolean"
typeof Math.abs
"function"
typeof undefined
"undefined"

5.1、Date

一般使用

var now=new Date();
now.getFullYear(); // 年
now.getMonth(); // 月 0~11
now.getDate();  // 日
now.getDay();   // 星期
now.getHours(); // 时
now.getMinutes();   // 分
now.getSeconds();   // 秒

now.getTime();  // 时间戳 1970 1.1 0:00:00~现在的毫秒数1593586801935

console.log(new Date(1593586801935));   //时间戳转为时间

转换

now.toLocaleString();
"2020/7/1 下午3:00:01"
now.toGMTString();
"Wed, 01 Jul 2020 07:00:01 GMT"

5.2、JSON

json 是什么

早期,所有数据传输习惯用XML文件

  • JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
  • 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在JavaScript一切皆为对象,如何js支持的类型都可以用JSON来转换

格式:

  • 对象都用{}
  • 数组都用[]
  • 所有键值对都用key:value

JSON字符串和js对象的转换

var user={
    name:"xuhao",
    age:18,
    sex:'男'
};

// 对象转换为json字符串{}  "{"name":"xuhao","age":18,"sex":"男"}"
var jsonUser=JSON.stringify(user);

// json 字符串转换为对象 参数为 json 字符串
var obj=JSON.parse('{"name":"xuhao","age":18,"sex":"男"}');        

JSON 和 jS 对象的区别

var obj= {a:"hello",b:"world"};
var json = '{"a":"hello","b":"world"}';

6、面向对象编程

6.1、什么是面向对象编程

JavaScript、java、c#。。。面向对象;JavaScript有些区别

类:模板

对象:具体的实例

JavaScript原型对象,类似于继承

var Student = {
    name: "xuhao",
    age: 18,
    run: function () {
        console.log(this.name + "--->running");
    }
};

var yxx = {
    name: "yangxinxin"
};

// yxx的原型对象是Student
yxx.__proto__ = Student;

class 继承

class关键字,是在ES6引入的

1、定义一个类,属性,方法

class Student {

    constructor(name) {
        this.name = name;
    }

    hello() {
        alert("hello")
    }
}

class pupil extends Student {
    constructor(name, grade) {
        super(name);
        this.grade = grade;
    }

    myGrade() {
        alert("我是小学生");
    }
}

var xiaohong = new Student("xiaohong");
var xiaoming = new pupil("xiaoming", 1);

本质:查看对象原型,其实还是一个__ proto __

原型链

__ proto __

在这里插入图片描述

7、操作BOM对象(重点)

浏览器介绍

JavaScript和浏览器关系?

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

BOM:浏览器对象模型

window

window 代表浏览器窗口

window.alert(1)
undefined
window.innerHeight	// 内部高度
344
window.innerWidth	// 内部宽度
150
window.outerHeight	// 外部高度
464
window.outerWidth	// 外部宽度
641

Navigator (了解)

Navigator,封装了浏览器的信息

navigator.appName
"Netscape"
navigator.appVersion
"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.58"
navigator.userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.58"
navigator.platform
"Win32"

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

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

screen

代表屏幕尺寸

screen.width
1536 px
screen.height
864 px

location

location代表当前页面的URL信息

host: "ntp.msn.cn"
href: "https://ntp.msn.cn/"
protocol: "https:"
reload: ƒ reload() // 刷新网页
location.assign("https://www.csdn.net/") // 设置新的地址

document

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

document.title
"微软 Bing 搜索 - 国内版"
document.title="许浩"
"许浩"

获得具体的文档树结点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <dl id="app">
        <dt>java</dt>
        <dd>javaEE</dd>
        <dd>javaSE</dd>
    </dl>

    <script>
        var dl=document.getElementById('app');
    </script>
</body>
</html>

获取cookie

document.cookie

服务器端可以设置cookie:httpOnly

history

history 代表浏览器的历史记录

history.back()	// 前进
history.forward()	// 后退

8、操作DOM对象(重点)

DOM:文档对象模型

核心

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

  • 更新:更新Dom节点
  • 遍历dom节点:得到Dom节点
  • 删除:删除一个Dom节点
  • 添加:添加一个新的节点

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

通过name,class,标签获得的都是数组元素,只有id获得的是单个具体的元素

获得dom节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div id="father">
    <h1>标题一</h1>
    <p id="p1">"p1"</p>
    <p class="p2">"p2"</p>
</div>

<script>
    var h1 = document.getElementsByTagName('h1');
    var p1 = document.getElementById('p1');
    var p2 = document.getElementsByClassName('p2');
    var father = document.getElementById("father")

    var child = father.children;  // 获取父节点下的所有节点
    // father.firstChild
    // father.lastChid
</script>

</body>
</html>

这是原生代码,之后尽量都使用jQuery

更新节点

<div id="id1">

</div>

<script>
    var id1 = document.getElementById("id1");
</script>

操作文本

  • id1.innerText=“许浩”
  • id1.innerHTML="< strong>123< /strong>"

操作css

id1.style.color='red'	// 属性使用字符串包裹
"red"
id1.style.fontSize='200px'	// 下划线 转 驼峰命名
"200px"
id1.style.padding='2em'
"2em"

删除结点

删除结点的步骤:先获取父节点,在通过父节点删除自己

<div id="father">
    <h1>标题一</h1>
    <p id="p1">"p1"</p>
    <p class="p2">"p2"</p>
</div>

<script>
    var self = document.getElementById('p1');
    var father = p1.paretElment;
	father.removeChild(self)
</script>

father.removeChild(p1)

注意:删除多个结点的时候,children是在时刻变化的

插入节点

我们获得某个Dom节点,假设这个dom节点是空的,我们通过innerText就可以增加一个元素,但是这个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");
	list.appendChild(js);	// js追加到list
</script>

创建一个新的标签,实现插入

<script>
    var js = document.getElementById("js"); // 已经存在节点
    var list = document.getElementById("list");

    //通过js 创建一个新的节点
    var newP = document.createElement('p'); // 创建一个p标签
    newP.id = 'newP';
    newP.innerText = 'nihao';

    // 创建一个标签节点
    var myScript = document.createElement('script');
    myScript.setAttribute('type', 'text/javascript');
	
    // 对body进行修改
    var body = document.getElementsByTagName('body');
    body[0].style.backgroundColor = '#32f';

     // insert
    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 >
  • 单选框 radio
  • 多选框 checkbox
  • 隐藏域 hidden
  • 密码框 password
  • 。。。

表单目的:提交信息

获取要提交的信息

<body>

<form action="post">
    <p>
        <span>用户名:</span> <input type="text" id="username">
    </p>

    <!--单选框的值,就是定义好的-->
    <p>
        <span>性别:</span>
        <input type="radio" name="sex" value="" id="boy"><input type="radio" name="sex" value="" id="girl"></p>
</form>

<script>
    var input_text = document.getElementById("username");
    var boy_radio = document.getElementById("boy");
    var girl_radio = document.getElementById("girl");

    // 得到输入框的值
    input_text.value
    // 修改输入框的值
    input_text.value = "杨欣馨"

    // 对于单选框,多选框等等,boy_radio.value只能取到当前的值
    boy_radio.checked;  // 查看返回的结果,如果为true,则被选中
    boy_radio.checked = true; // 赋值
</script>

</body>

提交表单。md5加密密码,表单优化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
</head>
<body>

<!--表单绑定提交事件
onsubmit提交一个绑定检测的函数 true,false
将这个表单返回给表单,使用onsubmit来接收
-->
<form action="www.baidu.com" method="post" οnsubmit="return method()">
    <p>
        <span>用户名:</span>
        <input type="text" id="username" name="username">
    </p>

    <p>
        <span>密码:</span>
        <!--<input type="password" id="password" name="password">-->
        <input type="password" id="input-password">
    </p>

    <!--通过隐藏域提交-->
    <input type="hidden" id="md5-password" name="password">

    <!--绑定事件 onclick 被点击-->
    <button type="submit" οnclick="meothod()">提交</button>

    <!--    <input type="submit">-->
    <input type="reset">

</form>

<script>
    function meothod() {
        var uname = document.getElementById("username");
        var pwd = document.getElementById("password");
        /*        console.log(uname.value);
                console.log(pwd.value);
                // MD5 加密算法
                pwd.value = md5(pwd.value);
                console.log(pwd.value);*/
        var md5pwd = document.getElementById("md5-password");

        md5pwd.value = md5(pwd.value);

        // 当返回值为true时则通过提交,false则阻止提交
        return false;

    }
</script>

</body>
</html>

10、jQuery

jQuery库里面包含大量的JavaScript的函数

如何获取jQuery

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--cdn引入jQuery-->
    <script crossorigin="anonymous" integrity="sha384-AQhQSZGQWTMJhb/TdS7NWpCmOM/8lIEsaevSU5oZtt8pQKoa+uJL4A2WnQ0O5Zj2" src="https://lib.baomitu.com/jquery/3.5.0/jquery.js"></script>
</head>
<body>

</body>
</html>

初体验jQuery

公式:$(selector).action()
selector选择器是css的选择器
action():功能方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--cdn引入jQuery-->
    <script crossorigin="anonymous" integrity="sha384-AQhQSZGQWTMJhb/TdS7NWpCmOM/8lIEsaevSU5oZtt8pQKoa+uJL4A2WnQ0O5Zj2" src="https://lib.baomitu.com/jquery/3.5.0/jquery.js"></script>
</head>
<body>

<a href="" id="test-jquery">点我有福利</a>

<!--
公式:$(selector).action()
selector选择器是css的选择器
action():功能方法
-->

<script>
    $("#test-jquery").click(function () {
        alert("hello,world");
    })
</script>

</body>
</html>

选择器

// 原生js,选择器少,麻烦
// 标签
document.getElementsByTagName("");
// id
document.getElementById("");
// 类
document.getElementsByClassName("");

// jQuery   css 中的选择器都可以使用
// 标签选择器
$("").click();
// id选择器
$("#id1").click();
// 类选择器
$(".class1").click();

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

action

鼠标事件,键盘事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script crossorigin="anonymous" integrity="sha384-AQhQSZGQWTMJhb/TdS7NWpCmOM/8lIEsaevSU5oZtt8pQKoa+uJL4A2WnQ0O5Zj2"
            src="https://lib.baomitu.com/jquery/3.5.0/jquery.js"></script>
    <style>
        #divMove {
            width: 500px;
            height: 500px;
            border: 1px solid red;
        }
    </style>
</head>
<body>

<!--获取鼠标的移动轨迹-->
mouse : <span id="mouseMove"></span>
<div id="divMove">
    在这里移动鼠标试试
</div>

<script>
    // 当网页加载完毕之后,响应事件
    /*    $(document).readOnly(function () {

        })*/
    $(function () {
        $("#divMove").mousemove(function (e) {
            $("#mouseMove").text("x:" + e.pageX + "y:" + e.pageY)
        })
    });
</script>

</body>
</html>

操作Dom

节点文本操作

$(".js").text();    //获取值
$(".js").text("文本");    //设置值
$(".js").html();    //获取值
$(".js").html("<strong>123</strong");    //设置值值

css的操作

$(".js").css("color","red") // 设置css

元素的显示和隐藏:本质display:none

 $(".js").hide()	// 隐藏
 $(".js").show()	// 显示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值