diff --git "a/53 \345\276\220\345\205\210\351\221\253/2023.12.14 JavaScript \347\254\224\350\256\260.md" "b/53 \345\276\220\345\205\210\351\221\253/2023.12.14 JavaScript \347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..720b58cb96183ec9e86e0d32f895cd1999b3a484 --- /dev/null +++ "b/53 \345\276\220\345\205\210\351\221\253/2023.12.14 JavaScript \347\254\224\350\256\260.md" @@ -0,0 +1,782 @@ +### 变量 + +//声明变量 +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的方式是一个属性,可以被修改覆盖,多次定义相当于是一个变量重新赋值 + + diff --git "a/53 \345\276\220\345\205\210\351\221\253/2023.12.15 JavaScript \347\254\224\350\256\260 .md" "b/53 \345\276\220\345\205\210\351\221\253/2023.12.15 JavaScript \347\254\224\350\256\260 .md" new file mode 100644 index 0000000000000000000000000000000000000000..720b58cb96183ec9e86e0d32f895cd1999b3a484 --- /dev/null +++ "b/53 \345\276\220\345\205\210\351\221\253/2023.12.15 JavaScript \347\254\224\350\256\260 .md" @@ -0,0 +1,782 @@ +### 变量 + +//声明变量 +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的方式是一个属性,可以被修改覆盖,多次定义相当于是一个变量重新赋值 + +