前端三要素:
- HTML(结构):决定网页的结构和内容
- CSS(表现):设定网页的表现样式
- JavaScript(行为):源代码不需要经过编译,而且由浏览器解释运行,用于控制网页行为
什么是JavaScript?
JavaScript是一门世界上最流行的脚本语言
ECMAScript可以理解为是JavaScript的一个标准,最新版本已经到es6版本了,但是大部分浏览器还只停留在支持es5代码上;开发环境和线上环境版本不一致
快速入门
1、引入JavaScript
内部引入:在<head></head>或<body></body>内部写都可以
<!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>Document</title>
<script>
alert("hello world!");
</script>
</head>
<body>
</body>
</html>
外部引入:<script></script>必须成对出现
<script src="01.js"></script>
alert("hello world!"); //弹窗
<!-- 不用显示定义type,也默认就是javascript -->
<script type="text/javascript"></script>
注释:与java相同 //xxxxxxxx
/* xxxxxx */
2、基本语法入门
1.定义变量 变量类型var(只有var一种) + 变量名 =变量值;
变量名:不能以数字开头,可以有$和_
<script>
var num = 1;
alert(num);
</script>
2.条件控制 (可以嵌套)
<script>
var score=1;
if (score>60&&score<70){
alert("60-70");
}else if(score>70&&score<80){
alert("70-80");
}else{
alert("other");
}
</script>
3.严格区分大小写
4.在网页控制台可以写JavaScript代码
5.console.log(score):在浏览器的控制台打印变量!
6.断点:点击下图标记处,重新刷新后会在断点处停止运行,与idea调试类似
7.Appliction:
8.浏览器必备调试(F12):
3、数据类型
数值、文本、图形、音频、视频......
1、js不区分小数和整数,统一用Number
① 123 //整数123
② 123.1 //浮点数123.1
③ 1.123e3 //科学计数法
④ -99 //负数
⑤ NaN // not a number
⑥ Infinity //表示无限大
2、字符串
"abc" 'abc'
3、布尔值
true 、false
4、逻辑运算
与:&& 两个都为真,结果为真
或:|| 一个为真,结果为真
非:! 真即假,假即真
5、比较运算符
赋值:=
等于(类型不一样,值一样也会判断为true):== 例:1 "1" 坚持不要使用==比较
绝对等于(类型一样,值一样,结果为true):===
特殊:NaN === NaN,这个与所有的数值都不相等,包括自己
只能通过isNaN(NaN)来判断这个数是否是NaN
浮点数问题:有精度的损失,尽量避免使用浮点数进行运算。
6、空指针null 、undefined
null:为空
undefined:未定义
7、数组(用中括号括起来[ ]):
java的数组必须是一系列相同类型的对象,js不需要这样
<script>
var arr=[1,2,3,4,5,'hello',null,true]; //保证代码的可读性,尽量使用[]
new Array(1,2,3,4,5,'hello',null);
</script>
取数组下标,如果越界了,就会undefined
8、对象(用大括号括起来{ }):
每个属性之间用逗号隔开,最后一个不需要加逗号
<script>
//Person person = new Person(1,2,3,4,5);
var person={
name:"qinjiang",
age:3,
tags:['js','java','web','...']
}
</script>
取对象的值:
严格检查格式:
‘use strict’; 严格检查模式,预防JavaScript的随意性导致产生的一些问题,必须写在JavaScript的第一行!
局部变量建议都使用let去定义(ES6语法)
数据类型(详细)
字符串:
1、正常字符串我们使用单引号或双引号包裹
2、注意转义字符 :“ \ ” 都要在字符串包裹内
\'
\n
\t
\u4e2d:中 Unicode字符:\u####
Ascii字符:"\x41" A
3、多行字符串编写 tab上面esc下面 ` `(piao)
<script>
'use strict';
var msg=
` hello
world
你好
`
</script>
4、模板字符串
<script>
'use strict';
let name="qinjiang";
let age=3;
let msg=`你好呀,${name}`
console.log(msg);
</script>
5、字符串长度:str.length
6、字符串的可变性:不可变
可以通过下标打印字符串内任意的字符
7、大小写转换
//这里是方法,不是属性
大写:student.toUpperCase();
小写:student.toLowerCase();
8、student.indexOf(' '):获取下标
9、substring
student.substring(1,3); //与 [ ) 相同,含头不含尾 [1,3)
student.substring(1); //从第一个字符串截取到最后一个字符串
数组:
Array可以包含任意的数据类型
var arr=[1,2,3,4,5,6]; // 通过下标取值和赋值
arr[0]
arr[0]=1;
1、长度
arr.length;
注意:假如给arr.length赋值,数组大小就会发生变化,如果赋值过小,元素就会丢失
2、indexOf,通过元素获得下标索引
arr = [1,2];
arr.indexOf(2);
下标:1
注意:字符串的 " 1 "和数字1是不同的
3、slice() 截取数组的一部分,返回一个新的数组,类似于String中的substring,
4、push、pop
push( ):压入尾部
pop( ):弹出尾部的一个元素
5、unshift( ) 、shift( )
unshift( ):压入头部
shift( ):弹出头部的一个元素
6、排序:sort( )
7、元素反转:reverse( )
8、concat( )
注意:concat( )并没有修改数组,只是会返回一个新的数组
9、连接符:join( )
打印拼接数组,使用特定的字符串连接
10、多维数组
数组:存储数据(如何存、如何取)
对象
若干个键值对
var 对象名 = {
属性名:属性值,
属性名:属性值,
属性名:属性值
}
//定义了一个person对象,它有四个属性
var person={
name:"kuangshen",
age:3,
email:"12345789@qq.com",
score:0
}
js中对象,{......}表示一个对象,键值对描述属性 xxx : xxx,多个属性之间使用逗号隔开,最后一个属性不加逗号
JavaScript中的所有的键都是字符串,值是任意对象
1、对象赋值
2、使用一个不存在的对象属性不会报错
3、动态的删减属性
通过delete删除对象的属性
4、动态的添加
直接给新的属性添加值即可
5、判断属性值是否在这个对象中
' age ' in person;
true;
' toString ' in person; //继承
true
6、判断一个属性是否是这个对象自身拥有的 hasOwnProperty
流程控制
if判断
var age = 3;
if(age > 3){
alert("haha");
}else{
alert("kuwa");
}
while循环,避免程序死循环
var age = 3;
while(age < 100){
age = age + 1;
console.log(age);
}
do{
age = age + 1;
console.log(age);
}while((age < 100))
for循环
for(let i = 0; i < 100; i++){
console.log(i);
}
forEach循环
var age = [1,2,3,4,5,2,6,4,7,4,9];
// 函数
age.forEach(function (value){
console.log(value)
} )
for...in
var age = [1,2,3,4,5,2,6,4,7,4,9];
// 函数
/* for( Type str: eL) */
//for(var index in object){ }
for( var num in age){
console.log(age[num])
}
Map和Set
Map:
var map = new Map([ ['tom',100],['jack',90],['haha',80] ]);
var name = map.get('tom');
map.set('admin',125);
map.delete('tom'); //删除
console.log(name);
Set:无序不重复的集合
var set = new Set([1,2,3,4,5,1,1,1]) //Set可以去重
set.add(2); //添加
set.delete(1); //删除
console.log(set.has(3)); //是否包含某个元素
使用iterator来遍历迭代我们Map、Set
var arr = [3,4,5];
for (let x in arr){ //打印的是下标
console.log(x);
}
for...in 与 for...of
var arr = [3,4,5];
for (let x of arr){ //打印具体的值
console.log(x);
}
//遍历Map只能用for...in
var map = new Map([ ['tom',100],['jack',90],['haha',80] ]);
for(var x of map){
console.log(x);
}
//遍历Set
var set = new Set([5,6,7]);
for(let x of set){
console.log(x);
}
函数
定义函数
- 定义方式一
绝对值函数
function abs(x){
if(x >=0){
return x;
}else{
return -x;
}
}
一旦执行到return代表函数结束,返回结果
如果没有执行return,函数执行完也会返回结果,结果就是undefined
- 定义方式二
var abs = function(x){
if(x >=0){
return x;
}else{
return -x;
}
}
function(x){ ... }:这是一个匿名函数,但是可以把结果赋值给abs,通过abs就可以调用函数
方式一和方式二等价
调用函数
abs(10); //10
abs(-10); //10
参数问题:js可以传任意一个参数,也可以不传递参数
参数进来是否存在的问题? 假设不存在参数,如何让规避?
var abs = function(x){
//手动抛出异常来判断
if(typeof x !== 'number'){
throw 'Not a Number';
}
if(x >=0){
return x;
}else{
return -x;
}
}
arguments:代表传递进来的所有的参数是一个数组
arguments 是一个js免费赠送的关键字
var abs = function(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;
}
}
问题:arguments包含所有的参数,我们有时候想使用多余的参数来进行附加操作,需要排除已有的参数
rest:
以前:
if(arguments.length > 2){
for(var i = 2; i < arguments.length; i++){
// ...
}
}
现在:ES6引入的新特性,获取除了已经定义的参数之外的所有参数~ ...
function aaa(a,b,...rest){
console.log("a =>" + a);
console.log("b =>" + b);
console.log(rest);
}
rest参数只能写在最后面,必须用 ... 标识。
变量的作用域
在js中,var 定义变量实际是有作用域的。
假设在函数体中声明,则在函数体外不可能使用(非要想实现,可以研究 闭包 )
function qj() {
var x = 1;
x = x + 1;
}
x = x + 2; //Uncaught ReferenceError: x is not defined
如果两个函数使用了相同的变量名,只要在函数内部,就不冲突
function qj() {
var x = 1;
x = x + 1;
}
function qj2() {
var x = 1;
x = x + 1;
}
内部函数可以访问外部函数的成员,反之则不行
function qj() {
var x = 1;
x = x + 1;
function qj2() {
var y = x + 1; //2
}
var z = y + 1;
}
假设,内部函数变量和外部函数的变量重名,函数查找变量从自身函数开始,由内向外查找;假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的变量(就近原则)
function qj() {
var x = 1;
function qj2() {
var x = 'A';
console.log('inner'+x); //innerA
}
console.log('outer'+x); //outer
qj2();
}
qj()
提升变量的作用域
function qj() {
var x = 'x' + y;
console.log(x);
var y = 'y';
}
结果:xundefined
说明:JavaScript执行引擎自动提升了y的声明但是不会提升变量y的赋值
function qj2() {
var y;
var x = 'x' + y;
console.log(x);
y = 'y';
}
这个是在JavaScript建立之初就存在的特性,养成规范:所有的变量定义都放在函数的头部,便于代码维护
全局函数
//全局变量
var x = 1;
function f(){
console.log(x);
}
f();
console.log(x);
全局对象 window
var x = 'xxx';
alert(x);
alert(window.x); //默认所有的全局变量,都会自动绑定在window对象下
window.alert(x);
window.alert(window.x);
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(456);
JavaScript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找;如果在全局作用域都没找到,就会报错 : RefrenceError
规范:由于我们所有的全局变量都会绑定到我们的 window 上,如果不同的js文件使用了相同的全局变量,就冲突了,那么如何减少冲突呢?
定义一个唯一全局变量
//唯一全局变量 var KuangApp = { }; //定义全局变量 KuangApp.name = 'kuangshen'; KuangApp.add = function(a,b){ return a + b; }
把自己的代码全部放图自己定义的唯一空间名字中,降低全局命名冲突的问题
jQuery:简化符号 $( )
局部作用域
function aaa( ){
for(var i = 0; i < 100; i++){
console.log(i);
}
console.log(i+1); //问题:i 出了这个作用域还可以使用
}
ES6 let 关键字,解决局部作用域冲突问题
建议打击都使用 let 去定义局部作用的变量;
function aaa( ){
for(let i = 0; i < 100; i++){
console.log(i);
}
console.log(i+1); //问题:i 出了这个作用域还可以使用
}
常量const
在ES6之前,怎么定义常量:只有用全部大写字母命名的变量就是常量,建议不要修改这样的值
var PI = '3.14';
console.log(PI);
PI = '213'; //可以改变这个值
console.log(PI);
在ES6引入了常量关键字 const
const PI = '3.14'; //只读变量
console.log(PI);
PI = '213';
console.log(PI);
方法
定义方法:
方法就是把函数放在对象的里面,对象只有两个东西:属性和方法
var kuangshen = {
name:'qj',
birth:2020,
//方法
age: function(){
// 今年 - 出生的年
var now = new Date().getFullYear();
return now - this.birth;
}
}
调用方法一定要带括号( )
kuangshen.age( )
this代表什么?
function getAge(){
// 今年 - 出生的年
var now = new Date().getFullYear();
return now - this.birth;
}
var kuangshen = {
name:'qj',
birth:2020,
//方法
age: getAge
}
this是无法指向的,是默认指向调用它的那个对象;
apply:在js中可以控制this的指向
function getAge(){
// 今年 - 出生的年
var now = new Date().getFullYear();
return now - this.birth;
}
var kuangshen = {
name:'qj',
birth:2020,
//方法
age: getAge
};
getAge.apply(kuangshen,[]); //无参,this:指向了kuangshen,参数为空
内部对象
标准对象:
Date
基本使用:
var now = new Date(); //Tue Jul 12 2022 15:09:24 GMT+0800 (中国标准时间)
now.getFullYear(); //年
now.getMonth(); //月 0 ~ 11代表月
now.getDate(); //日
now.getDay(); //星期几
now.getHours(); //时
now.getMinutes(); //分
now.getSeconds(); //秒
now.getTime(); //时间戳 全世界统一 1970 1.1 0:00:00 到现在的毫秒数
console.log(new Date(1657609764002)) //时间戳转为时间
转换:
now = new Date(1657609764002);
Tue Jul 12 2022 15:09:24 GMT+0800 (中国标准时间)
now.toLocaleString(); //注意,调用是一个方法,不是一个属性
'2022/7/12 15:09:24'
now.toGMTString();
'Tue, 12 Jul 2022 07:09:24 GMT'
JSON
json是什么?
- 是一种轻量级的数据交换格式
- 简洁和清晰的层次结构是的JSON成为理想的数据交换语言
- 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
在JavaScript一切皆为对象,任何JavaScript支持的类型都可以用JSON来表示;number、string...
格式:
- 对象都用 { }
- 数组都用 [ ]
- 所有的键值对都使用 key : value
JSON字符串和JS对象的转化
var user = {
name:"qinjiang",
age:3,
sex:"男"
};
//对象转化为json字符串 {"name":"qinjiang","age":3,"sex":"男"}
var jsonUser = JSON.stringify(user);
//json 字符串转化为对象 参数为json字符串
var obj = JSON.parse( '{"name":"qinjiang","age":3,"sex":"男"}' );
JSON和JS对象的区别:
var obj = {a: 'hello', b:'hellob'};
var json = '{"a": "hello", "b": "hellob"}';
Ajax
- 原生的JavaScript写法 xhr 异步请求
- jQuey封装好的方法 $("#name")ajax(" ")
- axios 请求
面向对象编程
原型对象
JavaScript、java、c#... 面向对象 JavaScript有点区别
类:模板 原型对象
对象:具体的实例
在JavaScript这个需要大家换一下思维方式
原型:
var student = {
name:"qinjiang",
age:3,
run: function(){
console.log(this.name + " run ...");
}
};
var xiaoming = {
name: "xiaoming"
};
//原型对象
xiaoming._proto_ = student;
var Bird = {
fly: function(){
console.log(this.name + " fly ...");
}
};
//xiaoming的原型是student
xiaoming._proto_ = Bird;
class继承(ES6之后引入)
1、定义一个类、属性、方法
//ES6之后
class Student{
constructor(name){
this.name = name;
}
hello(){
alert('Hello');
}
}
var xiaoming = new Student("xiaoming");
var xiaohong = new Student("xiaohong");
继承
//ES6之后
class Student{
constructor(name){
this.name = name;
}
hello(){
alert('Hello');
}
}
class XiaoStudent extends Student{
constructor(name,grade){
super(name); //继承父类的东西
this.grade = grade;
}
myGrade(){
alert('我是一名小学生');
}
}
var xiaoming = new Student("xiaoming");
var xiaohong = new XiaoStudent("xiaohong",1);
本质:查看对象原型
原型链:
_proto_:
操作BOM对象
浏览器介绍
JavaScript和浏览器关系?
JavaScript 诞生就是为了能够让他在浏览器中运行
BOM:浏览器对象模型
- IE 6 ~ 11
- Chrome
- Safari
- FireFox
- Opera
三方
- QQ浏览器
- 360浏览器
window
window 代表浏览器窗口 //可以调整浏览器窗口试试
Navigator (不建议使用)
封装了浏览器的信息
大多数时候,我们不会使用 navigator 对象,因为会被人为修改
不建议使用这些属性来判断和编写代码
screen
代表屏幕的尺寸
location
代表当前页面的URL信息
host: "www.baidu.com" 主机
href: "https://www.baidu.com/" 当前指向的位置
protocol: "https:" 协议
reload: ƒ reload() 重新加载(刷新网页)
location.assign(' 网址 ')
document
代表当前的页面,HTML DOM文档树
获取具体的文档树节点
<dl id="app">
<dt> Java </dt>
<dd> JavaSE </dd>
<dd> JavaEE </dd>
</dl>
<script>
var dL = document.getElementById('app');
</script>
获取cookie
document.cookie
劫持cookie原理
www.taobao.com
<script src="aa.js"></script>
<!-- 恶意人员,在获取你的cookie上传到他的服务器 -->
服务器端可以设置:cookie:httpOnly
history:代表浏览器的历史记录 (不建议使用)
history.back( ) //后退
history.forward( ) //前进
操作DOM对象
DOM:文档对象模型
核心:
浏览器网页就是一个 Dom 树形结构
- 更新:更新Dom节点
- 遍历Dom节点:通过Dom节点
- 删除:删除一个Dom节点
- 添加:添加一个新的节点
要操作一个Dom节点,就必须要先获得这个Dom节点!
<body>
<h1> 标题一 </h1>
<p id="p1"> p1 </p>
<p class="p2"> p2 </p>
<script>
//对应CSS选择器
var h1 = document.getElementsByTagName('h1');
var p1 = document.getElementById('p1');
var p2 = document.getElementsByClassName('p2');
</script>
</body>
获得dom节点
这是原生代码,之后我们尽量都使用jQuery( );
<div id="father">
<h1> 标题一 </h1>
<p id="p1"> p1 </p>
<p class="p2"> p2 </p>
</div>
<script>
//对应CSS选择器
var h1 = document.getElementsByTagName('h1');
var p1 = document.getElementById('p1');
var p2 = document.getElementsByClassName('p2');
var father = document.getElementById('father');
var childrens = father.children; //获取父节点下的所有子节点
//father.firstchild
//father.lastchild
</script>
更新节点
<div id="id1"> </div> <script> var id1 = document.getElementById('id1'); </script>
id1.innerText = '456'; //修改文本的值
id1.innerHTML = '<strong> 123 </strong>' //可以解析HTML文本标签
id1.innerText = '<strong> 123 </strong>'
<div id="id1">
</div>
<script>
var id1 = document.getElementById('id1');
id1.innerText = 'abc';
</script>
操作jS
id1.style.color = 'red'; //属性使用 字符串 包裹
id1.style.fontSize = '20px' //下划线转驼峰命名问题
id1.style.padding = '20px'
删除节点
删除节点的步骤:先获取父节点,再通过父节点删除自己
<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.parentElement;
father.removeChild(p1); //通过父节点删除子节点
//删除是一个动态的过程
father.removeChild(father.children[0]); //<h1> 标题一 </h1>
father.removeChild(father.children[1]); //<p class="p2"> p2 </p>
father.removeChild(father.children[2]); //Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.
</script>
注意:删除多个节点的时候,Children 属性是在时刻变化的,删除节点的时候一定要注意!
插入节点
- 我们获得了某个Dom节点,假设这个Dom节点是空的,我们通过innerHTML就可以增加一个元素了,但是这个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'); //通过JS创建一个新的节点 var newP = document.createElement('p'); //创建一个p标签,实现插入 name.id = 'newP'; newP.innerText = 'Hello,world!'; list.appendChild(newP); //创建一个标签节点 var myStyle = document.createElement('style'); myStyle.setAttribute('type','text/css'); myStyle.innerHTML = 'body{background-color: chartreuse;}' //设置标签内容 document.getElementsByTagName('head')[0].appendChild(myStyle); </script>
insertBefore
操作表单
表单是什么? form DOM树
- 文本框 text
- 下拉框 <select>
- 单选框 radio
- 多选框 checkbox
- 隐藏域 hidden
- 密码框 password
- ......
表单的目的:提交信息
获得要提交的信息
<form action="">
<p>
<span> 用户名: </span> <input type="text" id="username">
</p>
<!-- 多选框的值,就是定义好的value -->
<p>
<span> 性别: </span>
<input type="radio" name="sex" value="man" id="boy"> 男
<input type="radio" name="sex" value="woman" 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 = '123';
//对于单选框、多选框...固定的值,用boy_radio.value只能取到当前的值(man)
boy_radio.checked; //查看返回的结果是否为true,如果为true,则被选中
girl_radio.checked = true;//赋值
</script>
提交表单,MD5加密密码,表单优化
<!-- 表单绑定提交事件
onsubmit = 绑定一个提交检测的函数,true,false 将这个结果返回给表单,
使用onsubmit接收
onsubmit = 'return aaa()' -->
<form action="https://www.badu.com/" method="post" onsubmit="return aaa()">
<p>
<span> 用户名: </span> <input type="text" id="username">
</p>
<p>
<span> 密码: </span> <input type="password" id="input-password">
</p>
<input type="hidden" id="md5-password" name="password">
<!-- 绑定事件 onclick:被点击 -->
<button type="button" > 提交 </button>
</form>
<script>
function aaa(){
alert(1);
var uname = document.getElementById('username');
var pwd = document.getElementById('input-password');
var md5pwd = document.getElementById('md5-password');
md5pwd.value = md5(pwd.valule);
//可以校验判断表单内容,true就是通过提交,false:阻止提交
return true;
}
</script>
jQuery
JavaScript
jQuery库,里面存在大量的JavaScript函数
1、获取jQuery:
jQueryjQuery: The Write Less, Do More, JavaScript Libraryhttps://jquery.com/
公式: $(selector).action()
<!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>Document</title>
<script src="./jquery-3.6.0.min.js"></script>
</head>
<body>
<!-- 公式:$(selector).action() -->
<a id="test-jquery"> 点我 </a>
<script>
//选择器是css选择器
$('#test-jquery').click(function(){
alert('hello,jquery');
})
</script>
</body>
</html>
选择器
//原生js,选择器少,麻烦不好记
//标签
document.getElementsByTagName()
//id
document.getElementById
//类
document.getElementsByClassName()
//jQuery
$('p').click //标签选择器
$('#id1').click //id选择器
$('.class1').click //class选择器
文档工具站:jQuery API 中文文档 | jQuery API 中文在线手册 | jquery api 下载 | jquery api chm
事件
鼠标事件、键盘事件、其他事件
<!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>Document</title>
<script src="./jquery-3.6.0.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).ready(function(){
// }) 简化为如下
$(function(){
$('#divMove').mousemove(function (e){
$('#mouseMove').text('x:' + e.pageX + 'y:' +e.pageY);
})
});
</script>
</body>
</html>
操作DOM
节点文本操作
$('#test-ul li[name=python]').text(); //获得值
$('#test-ul li[name=python]').text('设置值'); //设置值
$('#test-ul li[name=python]').html(); //获得值
$('#test-ul li[name=python]').html('<strong> 123 </strong>'); //设置值
CSS操作
$('#test-ul li[name=python]').css("color","red");
元素的显示和隐藏:本质 display:none;
$('#test-ul li[name=python]').show(); //显示
$('#test-ul li[name=python]').hide(); //隐藏
$(window).width();
$(window).height();
$('test-ul li[name=python]').toggle();
前端代码:
打开审查元素,删去不必要的东西(Elements内删去之后网页不变)
如何巩固js:看jQuery源码,看游戏源码
如何巩固HTML,CSS:扒网站