From 4b772023ea5a4abc1d0252a9078fcf6183b1bfb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E5=BF=A0=E9=92=A6?= <11785125+mei-zhongqin@user.noreply.gitee.com> Date: Sun, 17 Dec 2023 12:26:52 +0000 Subject: [PATCH 1/3] =?UTF-8?q?52=20=E7=8E=8B=E5=8F=91=E6=A7=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 梅忠钦 <11785125+mei-zhongqin@user.noreply.gitee.com> --- .../2023-12-17.md" | 783 ++++++++++++++++++ 1 file changed, 783 insertions(+) create mode 100644 "56\346\242\205\345\277\240\351\222\246/2023-12-17.md" diff --git "a/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" "b/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" new file mode 100644 index 0000000..c3947de --- /dev/null +++ "b/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" @@ -0,0 +1,783 @@ +```js +### 变量 + +//声明变量 +let 变量名 +//变量赋值 +变量名 = 值 +let 变量名 = 值 +let不可多次声明同一个变量 +//声明多个变量 +let 变量名 = 值,变量2 = 值2... + +# 变量命名规则与规范 + +规则: +1.不能用关键字 +2.只能有字母,数字,下划线_,$ 组成,且数字不能作为开头 +3.字母严格区分大小写 +规范: +1.见名知意 +2.小驼峰命名法 + +# let与var的区别 + +1.var可以先使用,再声明 +2.var可以重复声明一个变量 + +### 不使用第三方变量完成交换 + +n1 = n1 + n2; 300=100+200 +n2 = n1 - n2; 100=300-200 +n2 = n1 - n2; 200=300-100 + +# 数据类型 + +Number 数字类型 +JavaScript中的正数,负数,小数等统一称为数字类型 +let num = 10; +let num2 = 10.12; +infinity 无穷大,由 n/0 得出 +NaN 不是数字代表一个计算错误,例如"小明"-2,任何对NaN操作的数都得NaN +Number.MAX_VALUE 范围的最大值 +Number.MIN_VALUE 范围的最小值 +isNaN(数 +String 字符串类型 +通过单引号,双引号或反引号包围的数据都叫字符串,单引号双引号无区别 +let uname = '闪电' +let ename = "秀六根" +无论引号还是双引号都必须成双成对 +单引号/双引号可以互相嵌套,但是不能自己嵌套自己(外双内单,外单内双) +必要时使用转义符\,输出单引号或双引号 +转义符:\'',\,""\t 制表, \n 换行 +字符串拼接的+号,从左到右,+号左右两边只要有字符串就一定是拼接效果 +字符串拼接,除了用+号,还可以用反引号将所有字符串包围起来,然后用 ${} 来表示变量 +例: document.writr(`大家好我叫${name},今年${age}岁了`) +boolean 布尔型 +两个固定的值,true和false +undefined 未定义类型 +只有一个值,undefined +只声明,不赋值的情况下,变量默认为undefined +null 空类型 +只有一个值,仅仅是一个代表“无”,“空”或“值未知”的特殊值 +与undefined的区别:undifined表示没有值,而null表示赋值了,但内容是空 +使用场景:将来有个变量存放对象,但是对象还没创建好,可以先给个null +object 引用类型或者复杂类型 +//js是弱数据类型,未赋值之前不知道是那种数据类型 + +# 查看类型 + +typeof 运算符可以返回被检测的数据类型,支持两种语法 +typeof x +typeof(x) + +### 数据类型的转换 + +隐式转换: +某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换 ++号两边只要有一个字符串,都会把另外一个转成字符串 +除了+号以外的算数运算符,比如-,*,/等都会把数据转成数字类型 +显式转换: +类型(数据) +Number(数据) //转成数字类型,如果字符串内容有非数字,转换失败时结果为NaN,即不是个数字 +parseInt(数据) //只保留整数 +parseFlost(数据) //可以保留小数 +补充 +-- + +//documen中的输出语句,换行用
因为document执行区域为HTML,而在console中用换行符换行 +//``反引号,也称模板字符串,可以让字符换行,换行可以直接被保留,最重要的是反引号支持解析变量,用${变量}表示 + +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +### 常量 + +const 常量名 = 值 +//不可二次赋值,所以在创建的时候不允许赋值与声明分开 + +### 运算符 + +'/'号中js会保留小数,而小数作为浮点数不精准 +3/0 Java会报错,而js不会,因为在js中0做除数是无穷大,Infinity + +### 赋值运算符 + ++=,-+,*=,/=,%= +a +=b --> a = a+b + +### 自增(一元运算符) + +i++,++i,i--,--i +先加和后加区别: +++i:先自增在参与运算 +i++:先参与运算在自增 +两者单独使用没区别,i++用的多 +例: +(i++ + ++i + i)=7 + +### 比较运算符 + +,< ,> = ,<= ,== ,=== ,!== + +== 为两边值是否相等 +=== 为两边的值与数据类型是否相等 +!== 为两边的值与类型都不等 +比较运算符会隐式转换为数字类型 +undefined==null,true +undefined===null,false +NaN 不等于任何值,包括他自己 + +### 逻辑运算符 + +&& 逻辑与,并且,两边都true才真 +|| 逻辑或,或者,两边都false才假 +! 逻辑非,取反 +优先级:!>&&>|| + +### 运算符优先等级 + +1.括号 () +2.一元运算符 ++ -- +3.算数运算符 先*/后+- +4.关系运算符 > >= < <= +5.相等运算符 == != === !== +6.逻辑运算符 先&&后|| +7.赋值运算符 = +8.逗号运算符 , + +### 判断 + +if 判断: +if(条件1){ + 满足条件执行的代码 +}else if(条件2){ + 满足条件执行的代码 +}else{ + 代码 +} +三元运算符: +条件?表达式1:表达式2 +Switch 判断: +switch (数据){ + case 值1: + 代码 + break + case 值2: + 代码 + break + .... + default: + 代码 + break +} +// case 匹配的值必须值和类型全等于,所以用=== + +### 断点调试 + +F12,打开sources,选择代码文件 + +### 循环 + +循环三要素:变量起始值,终止条件(无终止条件会死循环),变量变化量(自增或自减) +while 循环:不明确的次数时使用 +while(循环条件){ + 循环体 +} +for 循环:明确循环次数时使用 +for(let i = 0;i你是什么牛魔` + + + +### 操作元素常用属性 + +常见属性如: href,title,src 等 +语法: 对象.属性 = 值 +例: +const bon = document.querySelector('bon') +bon.src = './imag001' +bon.herf = 'www.baidu.com' + + + +### 操作元素样式属性 + +1.通过style属性操作CSS +2.操作类名(className)操作CSS +3.通过classList操作CSS +1.通过style属性操作CSS +语法: 对象.style.样式属性 = '值' +例如: +const bon = document.querySelector('bon') +bon.style.width = '300px' +bon.style.backgroupColor = 'red' +bon.style.border = '2px solid blue' +// 修改样式通过style属性引出 +//如果有连接符-如:backgroup-color 需要转换成小驼峰命名法backgroupColor +//赋值的时候记得CSS单位 如 px +2.操作类名(className)操作CSS +如果修改的样式比较多,直接用style修改比较繁琐,可以通过借助于CSS类名的形式,在CSS里写属性和值,再给某个标签赋予类名 +给元素赋予属性类名,相当于
+语法: 元素.className = '类名' +例如: +const bon = document.querySelector('bon') +bon.className = 'box' +//由于class是关键词,所以用className代替 +//className是使用新值换旧值(覆盖),所以如果需要添加一个类,需要保留之前的类名 bon.className = 'xxn box' +3.通过classList操作CSS +为了解决className容易覆盖以前的类名,我们可以通过classList方式追加和删除类名 +语法: +元素.classList.add('类名') // 添加 +元素.classList.remove('类名') // 删除 +元素.classList.toggle('类名') // 切换,有就删掉,没有就添加 +例如: +const bon = document.querySelector('bon') +bon.classList.add('xxn') // 追加xxn类名 +bon.classList.remove('xxn') // 删除xxn类名 +bon.classList.toggle('xss') // 切换xss类名,有就删掉,没有就添加 + + + +### 操作表单元素样式 + +表单很多情况也需要修改熟悉,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框 +正常的有属性有取值的 跟其他的标签属性没有任何关系 +语法: +获取: DOM对象.属性名 +设置: DOM对象.属性名 = 新值 +例如: + +const uname = document.querySelector('input') +uname.value = '用户名' +uname.type = 'password' +//innerHTML得不到表单的值,所以才需要用表单.属性名 +表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示,如果为true代表添加了该属性,如果为false代表移除该属性 +例如: disabled,checked,selected +const ipt = document.querySelector('input') +ipt.checked = true // 勾选状态 +const button = document.querySelector('button') +button.disabled = true //禁用按钮 + + + +### 自定义属性 + +标准属性:标签天生自带的属性,比如class,id,title等,或可以直接用.语法操作的属性,比如 disabled,checked,selected +自定义属性: +在HTML5中推出来专门的data-自定义属性 +在DOM对象上一律以dataset对象方式获取 +例如: + +
1
+const one = document.querySelector('div') +console.log(one.dataset.id) // 获取结果为1 + +### 定时器 + +能够使用定时器函数重复执行代码 +1.开启定时器 +setInterval(函数,间隔时间) +setInterval(函数名,间隔时间) +例如: +setInterval(function(){console.log('牛魔倒计时')},1000) +setInterval(getName,1000) +//间隔时间单位是毫秒 +//函数名不需要加括号 +//定时器返回的是一个id数字 +2.关闭定时器 +let 变量名 = setInterval(函数,间隔时间) //定时器返回的是一个id数字 +clearInterval(变量名) + + + + + +### CSS选择器 + +1.用标签做选择器,叫做标签选择器 对标签 +例如: +h1{ + color:red +} + +

这是标签

+2.用类名做选择器 对多个元素 +例如: +.a1{ + color:red +} +
这是div
+

这是正文

+3.用id做选择器 对单 +例如: +#b2{ + color:red +} +
这是div
+ +### const常量 + +const声明的值不能更改,而且const声明变量的时候里面需要初始化 +但是对于引用数据类型,const声明的变量,里面存的不是值,而是地址 +const指向栈地址,栈再指向堆 +所以 const a = [2]; a.push(3) 不报错 +而 a = [4] 会报错 +同样 +const b = document.querySelector('div') +b.innerText = '321' +指向的是'div'的位置,修改div的内容不报错 + +可以从上往下找下级标签,中间用空格间隔,例如: +const b = document.querySelector('.a li') + + + + + +### 伪类 + +取第1个值 +例 取第一个li li:first-child +const li = document.querySelector('.a1 li:first-child') +取第n个值 +例 取第5个li li:nth-child(5) +const li2 = document.querySelector('.a1 li:nth-child(5)') +取第最后一个值 +例 取最后一个li li:last-child +const li3 = document.querySelector('.a1 li:last-child') + + + +### 生成随机数函数 + +function getRandom(n,m){ + return Math.floor(Math.random() * m-n+1)+n +} + +### 补充 + +//获取元素时,建议从上级往下多级确认//innerHTML,innerText只能获取双标签,如

xx

,,获取不到单标签如 + + + + + +### 操作表单元素样式 + +//innerHTML,innerText只能获取双标签,如

xx

,,获取不到单标签如 +表单很多情况也需要修改熟悉,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框 +正常的有属性有取值的 跟其他的标签属性没有任何关系 +语法: +获取: DOM对象.属性名 +设置: DOM对象.属性名 = 新值 +例如: + +const uname = document.querySelector('input') +uname.value = '用户名' +uname.type = 'password' +//innerHTML得不到表单的值,所以才需要用表单.属性名 +//button比较特殊,他是双标签,可以用innerHTML,innerText +表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示,如果为true代表添加了该属性,如果为false代表移除该属性 +例如: disabled 禁用表单元素,checked 单选框复选框打钩;下拉框选中,selected +const ipt = document.querySelector('input') +ipt.checked = true // 勾选状态 +const button = document.querySelector('button') +button.disabled = true //禁用按钮 + + + +### 自定义属性 + +标准属性:标签天生自带的属性,比如class,id,title等,或可以直接用.语法操作的属性,比如 disabled,checked,selected +自定义属性: +在HTML5中推出来专门的data-自定义属性 +在DOM对象上一律以dataset对象方式获取 +例如: + + + + 补充 + +// 对象.style.display = 'none' 隐藏,用在删除广告等 +// 对象.style.display = 'block' 显示 + + + +### 事件监听 + +事件是在编程系统内发生的动作或发生的事情,比如在网页上单击一个按钮 + +事件监听就是、让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出相应,也称为绑定事件或者注册事件,比如鼠标经过显示下拉菜单,比如点击可以播放轮播图等 + +语法: +元素对象.addEventListener('事件类型',要执行的函数) +例: +const div = document.querySelector('div') +div.addEventListener('click',function(){ + document.write('打印的内容') +}) +//相当于给div添加一个事件,这个事件可以直接调用,要加括号: +div.click() +事件监听三要素: +1.事件源:那个dom元素被事件触发了,要获取dom元素 +2.事件类型:用什么方式触发,比如单击click,双击dblclick等 +3.事件调用的函数:要做什么事 +//事件监听要加引号 +//函数是点击之后再去执行,每次点击都会执行一次 + + + +### 事件监听的类型 + +鼠标事件: +click 鼠标点击 +dblclick 鼠标双击 +mouseenter 鼠标经过 +mouseleave 鼠标离开 +键盘事件: +keydown 键盘按下触发 +keyup 键盘抬起触发 + + + +### 事件监听版本 + +DOML0 +事件源.on事件 = function(){} +DOML2 +事件源.addEventListener('事件',function(){}) +区别:on的方式是一个属性,可以被修改覆盖,多次定义相当于是一个变量重新赋值s +``` + -- Gitee From 2f0043efc187acc4a46892de78df643b6b71ed34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E5=BF=A0=E9=92=A6?= <11785125+mei-zhongqin@user.noreply.gitee.com> Date: Sun, 17 Dec 2023 12:27:34 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2056?= =?UTF-8?q?=E6=A2=85=E5=BF=A0=E9=92=A6/2023-12-17.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2023-12-17.md" | 783 ------------------ 1 file changed, 783 deletions(-) delete mode 100644 "56\346\242\205\345\277\240\351\222\246/2023-12-17.md" diff --git "a/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" "b/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" deleted file mode 100644 index c3947de..0000000 --- "a/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" +++ /dev/null @@ -1,783 +0,0 @@ -```js -### 变量 - -//声明变量 -let 变量名 -//变量赋值 -变量名 = 值 -let 变量名 = 值 -let不可多次声明同一个变量 -//声明多个变量 -let 变量名 = 值,变量2 = 值2... - -# 变量命名规则与规范 - -规则: -1.不能用关键字 -2.只能有字母,数字,下划线_,$ 组成,且数字不能作为开头 -3.字母严格区分大小写 -规范: -1.见名知意 -2.小驼峰命名法 - -# let与var的区别 - -1.var可以先使用,再声明 -2.var可以重复声明一个变量 - -### 不使用第三方变量完成交换 - -n1 = n1 + n2; 300=100+200 -n2 = n1 - n2; 100=300-200 -n2 = n1 - n2; 200=300-100 - -# 数据类型 - -Number 数字类型 -JavaScript中的正数,负数,小数等统一称为数字类型 -let num = 10; -let num2 = 10.12; -infinity 无穷大,由 n/0 得出 -NaN 不是数字代表一个计算错误,例如"小明"-2,任何对NaN操作的数都得NaN -Number.MAX_VALUE 范围的最大值 -Number.MIN_VALUE 范围的最小值 -isNaN(数 -String 字符串类型 -通过单引号,双引号或反引号包围的数据都叫字符串,单引号双引号无区别 -let uname = '闪电' -let ename = "秀六根" -无论引号还是双引号都必须成双成对 -单引号/双引号可以互相嵌套,但是不能自己嵌套自己(外双内单,外单内双) -必要时使用转义符\,输出单引号或双引号 -转义符:\'',\,""\t 制表, \n 换行 -字符串拼接的+号,从左到右,+号左右两边只要有字符串就一定是拼接效果 -字符串拼接,除了用+号,还可以用反引号将所有字符串包围起来,然后用 ${} 来表示变量 -例: document.writr(`大家好我叫${name},今年${age}岁了`) -boolean 布尔型 -两个固定的值,true和false -undefined 未定义类型 -只有一个值,undefined -只声明,不赋值的情况下,变量默认为undefined -null 空类型 -只有一个值,仅仅是一个代表“无”,“空”或“值未知”的特殊值 -与undefined的区别:undifined表示没有值,而null表示赋值了,但内容是空 -使用场景:将来有个变量存放对象,但是对象还没创建好,可以先给个null -object 引用类型或者复杂类型 -//js是弱数据类型,未赋值之前不知道是那种数据类型 - -# 查看类型 - -typeof 运算符可以返回被检测的数据类型,支持两种语法 -typeof x -typeof(x) - -### 数据类型的转换 - -隐式转换: -某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换 -+号两边只要有一个字符串,都会把另外一个转成字符串 -除了+号以外的算数运算符,比如-,*,/等都会把数据转成数字类型 -显式转换: -类型(数据) -Number(数据) //转成数字类型,如果字符串内容有非数字,转换失败时结果为NaN,即不是个数字 -parseInt(数据) //只保留整数 -parseFlost(数据) //可以保留小数 -补充 --- - -//documen中的输出语句,换行用
因为document执行区域为HTML,而在console中用换行符换行 -//``反引号,也称模板字符串,可以让字符换行,换行可以直接被保留,最重要的是反引号支持解析变量,用${变量}表示 - ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -### 常量 - -const 常量名 = 值 -//不可二次赋值,所以在创建的时候不允许赋值与声明分开 - -### 运算符 - -'/'号中js会保留小数,而小数作为浮点数不精准 -3/0 Java会报错,而js不会,因为在js中0做除数是无穷大,Infinity - -### 赋值运算符 - -+=,-+,*=,/=,%= -a +=b --> a = a+b - -### 自增(一元运算符) - -i++,++i,i--,--i -先加和后加区别: -++i:先自增在参与运算 -i++:先参与运算在自增 -两者单独使用没区别,i++用的多 -例: -(i++ + ++i + i)=7 - -### 比较运算符 - -,< ,> = ,<= ,== ,=== ,!== - -== 为两边值是否相等 -=== 为两边的值与数据类型是否相等 -!== 为两边的值与类型都不等 -比较运算符会隐式转换为数字类型 -undefined==null,true -undefined===null,false -NaN 不等于任何值,包括他自己 - -### 逻辑运算符 - -&& 逻辑与,并且,两边都true才真 -|| 逻辑或,或者,两边都false才假 -! 逻辑非,取反 -优先级:!>&&>|| - -### 运算符优先等级 - -1.括号 () -2.一元运算符 ++ -- -3.算数运算符 先*/后+- -4.关系运算符 > >= < <= -5.相等运算符 == != === !== -6.逻辑运算符 先&&后|| -7.赋值运算符 = -8.逗号运算符 , - -### 判断 - -if 判断: -if(条件1){ - 满足条件执行的代码 -}else if(条件2){ - 满足条件执行的代码 -}else{ - 代码 -} -三元运算符: -条件?表达式1:表达式2 -Switch 判断: -switch (数据){ - case 值1: - 代码 - break - case 值2: - 代码 - break - .... - default: - 代码 - break -} -// case 匹配的值必须值和类型全等于,所以用=== - -### 断点调试 - -F12,打开sources,选择代码文件 - -### 循环 - -循环三要素:变量起始值,终止条件(无终止条件会死循环),变量变化量(自增或自减) -while 循环:不明确的次数时使用 -while(循环条件){ - 循环体 -} -for 循环:明确循环次数时使用 -for(let i = 0;i你是什么牛魔` - - - -### 操作元素常用属性 - -常见属性如: href,title,src 等 -语法: 对象.属性 = 值 -例: -const bon = document.querySelector('bon') -bon.src = './imag001' -bon.herf = 'www.baidu.com' - - - -### 操作元素样式属性 - -1.通过style属性操作CSS -2.操作类名(className)操作CSS -3.通过classList操作CSS -1.通过style属性操作CSS -语法: 对象.style.样式属性 = '值' -例如: -const bon = document.querySelector('bon') -bon.style.width = '300px' -bon.style.backgroupColor = 'red' -bon.style.border = '2px solid blue' -// 修改样式通过style属性引出 -//如果有连接符-如:backgroup-color 需要转换成小驼峰命名法backgroupColor -//赋值的时候记得CSS单位 如 px -2.操作类名(className)操作CSS -如果修改的样式比较多,直接用style修改比较繁琐,可以通过借助于CSS类名的形式,在CSS里写属性和值,再给某个标签赋予类名 -给元素赋予属性类名,相当于
-语法: 元素.className = '类名' -例如: -const bon = document.querySelector('bon') -bon.className = 'box' -//由于class是关键词,所以用className代替 -//className是使用新值换旧值(覆盖),所以如果需要添加一个类,需要保留之前的类名 bon.className = 'xxn box' -3.通过classList操作CSS -为了解决className容易覆盖以前的类名,我们可以通过classList方式追加和删除类名 -语法: -元素.classList.add('类名') // 添加 -元素.classList.remove('类名') // 删除 -元素.classList.toggle('类名') // 切换,有就删掉,没有就添加 -例如: -const bon = document.querySelector('bon') -bon.classList.add('xxn') // 追加xxn类名 -bon.classList.remove('xxn') // 删除xxn类名 -bon.classList.toggle('xss') // 切换xss类名,有就删掉,没有就添加 - - - -### 操作表单元素样式 - -表单很多情况也需要修改熟悉,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框 -正常的有属性有取值的 跟其他的标签属性没有任何关系 -语法: -获取: DOM对象.属性名 -设置: DOM对象.属性名 = 新值 -例如: - -const uname = document.querySelector('input') -uname.value = '用户名' -uname.type = 'password' -//innerHTML得不到表单的值,所以才需要用表单.属性名 -表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示,如果为true代表添加了该属性,如果为false代表移除该属性 -例如: disabled,checked,selected -const ipt = document.querySelector('input') -ipt.checked = true // 勾选状态 -const button = document.querySelector('button') -button.disabled = true //禁用按钮 - - - -### 自定义属性 - -标准属性:标签天生自带的属性,比如class,id,title等,或可以直接用.语法操作的属性,比如 disabled,checked,selected -自定义属性: -在HTML5中推出来专门的data-自定义属性 -在DOM对象上一律以dataset对象方式获取 -例如: - -
1
-const one = document.querySelector('div') -console.log(one.dataset.id) // 获取结果为1 - -### 定时器 - -能够使用定时器函数重复执行代码 -1.开启定时器 -setInterval(函数,间隔时间) -setInterval(函数名,间隔时间) -例如: -setInterval(function(){console.log('牛魔倒计时')},1000) -setInterval(getName,1000) -//间隔时间单位是毫秒 -//函数名不需要加括号 -//定时器返回的是一个id数字 -2.关闭定时器 -let 变量名 = setInterval(函数,间隔时间) //定时器返回的是一个id数字 -clearInterval(变量名) - - - - - -### CSS选择器 - -1.用标签做选择器,叫做标签选择器 对标签 -例如: -h1{ - color:red -} - -

这是标签

-2.用类名做选择器 对多个元素 -例如: -.a1{ - color:red -} -
这是div
-

这是正文

-3.用id做选择器 对单 -例如: -#b2{ - color:red -} -
这是div
- -### const常量 - -const声明的值不能更改,而且const声明变量的时候里面需要初始化 -但是对于引用数据类型,const声明的变量,里面存的不是值,而是地址 -const指向栈地址,栈再指向堆 -所以 const a = [2]; a.push(3) 不报错 -而 a = [4] 会报错 -同样 -const b = document.querySelector('div') -b.innerText = '321' -指向的是'div'的位置,修改div的内容不报错 - -可以从上往下找下级标签,中间用空格间隔,例如: -const b = document.querySelector('.a li') - - - - - -### 伪类 - -取第1个值 -例 取第一个li li:first-child -const li = document.querySelector('.a1 li:first-child') -取第n个值 -例 取第5个li li:nth-child(5) -const li2 = document.querySelector('.a1 li:nth-child(5)') -取第最后一个值 -例 取最后一个li li:last-child -const li3 = document.querySelector('.a1 li:last-child') - - - -### 生成随机数函数 - -function getRandom(n,m){ - return Math.floor(Math.random() * m-n+1)+n -} - -### 补充 - -//获取元素时,建议从上级往下多级确认//innerHTML,innerText只能获取双标签,如

xx

,,获取不到单标签如 - - - - - -### 操作表单元素样式 - -//innerHTML,innerText只能获取双标签,如

xx

,,获取不到单标签如 -表单很多情况也需要修改熟悉,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框 -正常的有属性有取值的 跟其他的标签属性没有任何关系 -语法: -获取: DOM对象.属性名 -设置: DOM对象.属性名 = 新值 -例如: - -const uname = document.querySelector('input') -uname.value = '用户名' -uname.type = 'password' -//innerHTML得不到表单的值,所以才需要用表单.属性名 -//button比较特殊,他是双标签,可以用innerHTML,innerText -表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示,如果为true代表添加了该属性,如果为false代表移除该属性 -例如: disabled 禁用表单元素,checked 单选框复选框打钩;下拉框选中,selected -const ipt = document.querySelector('input') -ipt.checked = true // 勾选状态 -const button = document.querySelector('button') -button.disabled = true //禁用按钮 - - - -### 自定义属性 - -标准属性:标签天生自带的属性,比如class,id,title等,或可以直接用.语法操作的属性,比如 disabled,checked,selected -自定义属性: -在HTML5中推出来专门的data-自定义属性 -在DOM对象上一律以dataset对象方式获取 -例如: - - - - 补充 - -// 对象.style.display = 'none' 隐藏,用在删除广告等 -// 对象.style.display = 'block' 显示 - - - -### 事件监听 - -事件是在编程系统内发生的动作或发生的事情,比如在网页上单击一个按钮 - -事件监听就是、让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出相应,也称为绑定事件或者注册事件,比如鼠标经过显示下拉菜单,比如点击可以播放轮播图等 - -语法: -元素对象.addEventListener('事件类型',要执行的函数) -例: -const div = document.querySelector('div') -div.addEventListener('click',function(){ - document.write('打印的内容') -}) -//相当于给div添加一个事件,这个事件可以直接调用,要加括号: -div.click() -事件监听三要素: -1.事件源:那个dom元素被事件触发了,要获取dom元素 -2.事件类型:用什么方式触发,比如单击click,双击dblclick等 -3.事件调用的函数:要做什么事 -//事件监听要加引号 -//函数是点击之后再去执行,每次点击都会执行一次 - - - -### 事件监听的类型 - -鼠标事件: -click 鼠标点击 -dblclick 鼠标双击 -mouseenter 鼠标经过 -mouseleave 鼠标离开 -键盘事件: -keydown 键盘按下触发 -keyup 键盘抬起触发 - - - -### 事件监听版本 - -DOML0 -事件源.on事件 = function(){} -DOML2 -事件源.addEventListener('事件',function(){}) -区别:on的方式是一个属性,可以被修改覆盖,多次定义相当于是一个变量重新赋值s -``` - -- Gitee From 834c76bcde89eb9ead5c66a6f9f7141bf52e1116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E5=BF=A0=E9=92=A6?= <11785125+mei-zhongqin@user.noreply.gitee.com> Date: Sun, 17 Dec 2023 12:28:01 +0000 Subject: [PATCH 3/3] =?UTF-8?q?56=E6=A2=85=E5=BF=A0=E9=92=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 梅忠钦 <11785125+mei-zhongqin@user.noreply.gitee.com> --- .../2023-12-17.md" | 783 ++++++++++++++++++ 1 file changed, 783 insertions(+) create mode 100644 "56\346\242\205\345\277\240\351\222\246/2023-12-17.md" diff --git "a/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" "b/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" new file mode 100644 index 0000000..c3947de --- /dev/null +++ "b/56\346\242\205\345\277\240\351\222\246/2023-12-17.md" @@ -0,0 +1,783 @@ +```js +### 变量 + +//声明变量 +let 变量名 +//变量赋值 +变量名 = 值 +let 变量名 = 值 +let不可多次声明同一个变量 +//声明多个变量 +let 变量名 = 值,变量2 = 值2... + +# 变量命名规则与规范 + +规则: +1.不能用关键字 +2.只能有字母,数字,下划线_,$ 组成,且数字不能作为开头 +3.字母严格区分大小写 +规范: +1.见名知意 +2.小驼峰命名法 + +# let与var的区别 + +1.var可以先使用,再声明 +2.var可以重复声明一个变量 + +### 不使用第三方变量完成交换 + +n1 = n1 + n2; 300=100+200 +n2 = n1 - n2; 100=300-200 +n2 = n1 - n2; 200=300-100 + +# 数据类型 + +Number 数字类型 +JavaScript中的正数,负数,小数等统一称为数字类型 +let num = 10; +let num2 = 10.12; +infinity 无穷大,由 n/0 得出 +NaN 不是数字代表一个计算错误,例如"小明"-2,任何对NaN操作的数都得NaN +Number.MAX_VALUE 范围的最大值 +Number.MIN_VALUE 范围的最小值 +isNaN(数 +String 字符串类型 +通过单引号,双引号或反引号包围的数据都叫字符串,单引号双引号无区别 +let uname = '闪电' +let ename = "秀六根" +无论引号还是双引号都必须成双成对 +单引号/双引号可以互相嵌套,但是不能自己嵌套自己(外双内单,外单内双) +必要时使用转义符\,输出单引号或双引号 +转义符:\'',\,""\t 制表, \n 换行 +字符串拼接的+号,从左到右,+号左右两边只要有字符串就一定是拼接效果 +字符串拼接,除了用+号,还可以用反引号将所有字符串包围起来,然后用 ${} 来表示变量 +例: document.writr(`大家好我叫${name},今年${age}岁了`) +boolean 布尔型 +两个固定的值,true和false +undefined 未定义类型 +只有一个值,undefined +只声明,不赋值的情况下,变量默认为undefined +null 空类型 +只有一个值,仅仅是一个代表“无”,“空”或“值未知”的特殊值 +与undefined的区别:undifined表示没有值,而null表示赋值了,但内容是空 +使用场景:将来有个变量存放对象,但是对象还没创建好,可以先给个null +object 引用类型或者复杂类型 +//js是弱数据类型,未赋值之前不知道是那种数据类型 + +# 查看类型 + +typeof 运算符可以返回被检测的数据类型,支持两种语法 +typeof x +typeof(x) + +### 数据类型的转换 + +隐式转换: +某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换 ++号两边只要有一个字符串,都会把另外一个转成字符串 +除了+号以外的算数运算符,比如-,*,/等都会把数据转成数字类型 +显式转换: +类型(数据) +Number(数据) //转成数字类型,如果字符串内容有非数字,转换失败时结果为NaN,即不是个数字 +parseInt(数据) //只保留整数 +parseFlost(数据) //可以保留小数 +补充 +-- + +//documen中的输出语句,换行用
因为document执行区域为HTML,而在console中用换行符换行 +//``反引号,也称模板字符串,可以让字符换行,换行可以直接被保留,最重要的是反引号支持解析变量,用${变量}表示 + +--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +### 常量 + +const 常量名 = 值 +//不可二次赋值,所以在创建的时候不允许赋值与声明分开 + +### 运算符 + +'/'号中js会保留小数,而小数作为浮点数不精准 +3/0 Java会报错,而js不会,因为在js中0做除数是无穷大,Infinity + +### 赋值运算符 + ++=,-+,*=,/=,%= +a +=b --> a = a+b + +### 自增(一元运算符) + +i++,++i,i--,--i +先加和后加区别: +++i:先自增在参与运算 +i++:先参与运算在自增 +两者单独使用没区别,i++用的多 +例: +(i++ + ++i + i)=7 + +### 比较运算符 + +,< ,> = ,<= ,== ,=== ,!== + +== 为两边值是否相等 +=== 为两边的值与数据类型是否相等 +!== 为两边的值与类型都不等 +比较运算符会隐式转换为数字类型 +undefined==null,true +undefined===null,false +NaN 不等于任何值,包括他自己 + +### 逻辑运算符 + +&& 逻辑与,并且,两边都true才真 +|| 逻辑或,或者,两边都false才假 +! 逻辑非,取反 +优先级:!>&&>|| + +### 运算符优先等级 + +1.括号 () +2.一元运算符 ++ -- +3.算数运算符 先*/后+- +4.关系运算符 > >= < <= +5.相等运算符 == != === !== +6.逻辑运算符 先&&后|| +7.赋值运算符 = +8.逗号运算符 , + +### 判断 + +if 判断: +if(条件1){ + 满足条件执行的代码 +}else if(条件2){ + 满足条件执行的代码 +}else{ + 代码 +} +三元运算符: +条件?表达式1:表达式2 +Switch 判断: +switch (数据){ + case 值1: + 代码 + break + case 值2: + 代码 + break + .... + default: + 代码 + break +} +// case 匹配的值必须值和类型全等于,所以用=== + +### 断点调试 + +F12,打开sources,选择代码文件 + +### 循环 + +循环三要素:变量起始值,终止条件(无终止条件会死循环),变量变化量(自增或自减) +while 循环:不明确的次数时使用 +while(循环条件){ + 循环体 +} +for 循环:明确循环次数时使用 +for(let i = 0;i你是什么牛魔` + + + +### 操作元素常用属性 + +常见属性如: href,title,src 等 +语法: 对象.属性 = 值 +例: +const bon = document.querySelector('bon') +bon.src = './imag001' +bon.herf = 'www.baidu.com' + + + +### 操作元素样式属性 + +1.通过style属性操作CSS +2.操作类名(className)操作CSS +3.通过classList操作CSS +1.通过style属性操作CSS +语法: 对象.style.样式属性 = '值' +例如: +const bon = document.querySelector('bon') +bon.style.width = '300px' +bon.style.backgroupColor = 'red' +bon.style.border = '2px solid blue' +// 修改样式通过style属性引出 +//如果有连接符-如:backgroup-color 需要转换成小驼峰命名法backgroupColor +//赋值的时候记得CSS单位 如 px +2.操作类名(className)操作CSS +如果修改的样式比较多,直接用style修改比较繁琐,可以通过借助于CSS类名的形式,在CSS里写属性和值,再给某个标签赋予类名 +给元素赋予属性类名,相当于
+语法: 元素.className = '类名' +例如: +const bon = document.querySelector('bon') +bon.className = 'box' +//由于class是关键词,所以用className代替 +//className是使用新值换旧值(覆盖),所以如果需要添加一个类,需要保留之前的类名 bon.className = 'xxn box' +3.通过classList操作CSS +为了解决className容易覆盖以前的类名,我们可以通过classList方式追加和删除类名 +语法: +元素.classList.add('类名') // 添加 +元素.classList.remove('类名') // 删除 +元素.classList.toggle('类名') // 切换,有就删掉,没有就添加 +例如: +const bon = document.querySelector('bon') +bon.classList.add('xxn') // 追加xxn类名 +bon.classList.remove('xxn') // 删除xxn类名 +bon.classList.toggle('xss') // 切换xss类名,有就删掉,没有就添加 + + + +### 操作表单元素样式 + +表单很多情况也需要修改熟悉,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框 +正常的有属性有取值的 跟其他的标签属性没有任何关系 +语法: +获取: DOM对象.属性名 +设置: DOM对象.属性名 = 新值 +例如: + +const uname = document.querySelector('input') +uname.value = '用户名' +uname.type = 'password' +//innerHTML得不到表单的值,所以才需要用表单.属性名 +表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示,如果为true代表添加了该属性,如果为false代表移除该属性 +例如: disabled,checked,selected +const ipt = document.querySelector('input') +ipt.checked = true // 勾选状态 +const button = document.querySelector('button') +button.disabled = true //禁用按钮 + + + +### 自定义属性 + +标准属性:标签天生自带的属性,比如class,id,title等,或可以直接用.语法操作的属性,比如 disabled,checked,selected +自定义属性: +在HTML5中推出来专门的data-自定义属性 +在DOM对象上一律以dataset对象方式获取 +例如: + +
1
+const one = document.querySelector('div') +console.log(one.dataset.id) // 获取结果为1 + +### 定时器 + +能够使用定时器函数重复执行代码 +1.开启定时器 +setInterval(函数,间隔时间) +setInterval(函数名,间隔时间) +例如: +setInterval(function(){console.log('牛魔倒计时')},1000) +setInterval(getName,1000) +//间隔时间单位是毫秒 +//函数名不需要加括号 +//定时器返回的是一个id数字 +2.关闭定时器 +let 变量名 = setInterval(函数,间隔时间) //定时器返回的是一个id数字 +clearInterval(变量名) + + + + + +### CSS选择器 + +1.用标签做选择器,叫做标签选择器 对标签 +例如: +h1{ + color:red +} + +

这是标签

+2.用类名做选择器 对多个元素 +例如: +.a1{ + color:red +} +
这是div
+

这是正文

+3.用id做选择器 对单 +例如: +#b2{ + color:red +} +
这是div
+ +### const常量 + +const声明的值不能更改,而且const声明变量的时候里面需要初始化 +但是对于引用数据类型,const声明的变量,里面存的不是值,而是地址 +const指向栈地址,栈再指向堆 +所以 const a = [2]; a.push(3) 不报错 +而 a = [4] 会报错 +同样 +const b = document.querySelector('div') +b.innerText = '321' +指向的是'div'的位置,修改div的内容不报错 + +可以从上往下找下级标签,中间用空格间隔,例如: +const b = document.querySelector('.a li') + + + + + +### 伪类 + +取第1个值 +例 取第一个li li:first-child +const li = document.querySelector('.a1 li:first-child') +取第n个值 +例 取第5个li li:nth-child(5) +const li2 = document.querySelector('.a1 li:nth-child(5)') +取第最后一个值 +例 取最后一个li li:last-child +const li3 = document.querySelector('.a1 li:last-child') + + + +### 生成随机数函数 + +function getRandom(n,m){ + return Math.floor(Math.random() * m-n+1)+n +} + +### 补充 + +//获取元素时,建议从上级往下多级确认//innerHTML,innerText只能获取双标签,如

xx

,,获取不到单标签如 + + + + + +### 操作表单元素样式 + +//innerHTML,innerText只能获取双标签,如

xx

,,获取不到单标签如 +表单很多情况也需要修改熟悉,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框 +正常的有属性有取值的 跟其他的标签属性没有任何关系 +语法: +获取: DOM对象.属性名 +设置: DOM对象.属性名 = 新值 +例如: + +const uname = document.querySelector('input') +uname.value = '用户名' +uname.type = 'password' +//innerHTML得不到表单的值,所以才需要用表单.属性名 +//button比较特殊,他是双标签,可以用innerHTML,innerText +表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示,如果为true代表添加了该属性,如果为false代表移除该属性 +例如: disabled 禁用表单元素,checked 单选框复选框打钩;下拉框选中,selected +const ipt = document.querySelector('input') +ipt.checked = true // 勾选状态 +const button = document.querySelector('button') +button.disabled = true //禁用按钮 + + + +### 自定义属性 + +标准属性:标签天生自带的属性,比如class,id,title等,或可以直接用.语法操作的属性,比如 disabled,checked,selected +自定义属性: +在HTML5中推出来专门的data-自定义属性 +在DOM对象上一律以dataset对象方式获取 +例如: + + + + 补充 + +// 对象.style.display = 'none' 隐藏,用在删除广告等 +// 对象.style.display = 'block' 显示 + + + +### 事件监听 + +事件是在编程系统内发生的动作或发生的事情,比如在网页上单击一个按钮 + +事件监听就是、让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出相应,也称为绑定事件或者注册事件,比如鼠标经过显示下拉菜单,比如点击可以播放轮播图等 + +语法: +元素对象.addEventListener('事件类型',要执行的函数) +例: +const div = document.querySelector('div') +div.addEventListener('click',function(){ + document.write('打印的内容') +}) +//相当于给div添加一个事件,这个事件可以直接调用,要加括号: +div.click() +事件监听三要素: +1.事件源:那个dom元素被事件触发了,要获取dom元素 +2.事件类型:用什么方式触发,比如单击click,双击dblclick等 +3.事件调用的函数:要做什么事 +//事件监听要加引号 +//函数是点击之后再去执行,每次点击都会执行一次 + + + +### 事件监听的类型 + +鼠标事件: +click 鼠标点击 +dblclick 鼠标双击 +mouseenter 鼠标经过 +mouseleave 鼠标离开 +键盘事件: +keydown 键盘按下触发 +keyup 键盘抬起触发 + + + +### 事件监听版本 + +DOML0 +事件源.on事件 = function(){} +DOML2 +事件源.addEventListener('事件',function(){}) +区别:on的方式是一个属性,可以被修改覆盖,多次定义相当于是一个变量重新赋值s +``` + -- Gitee