原生JS
数据类型
Number-数字 String-字符串 Boolean-布尔型 null-空 undefined-未定义
变量 (同var功能相同)
- let num1=“das”(let会自己检查变量是否重复定义)
- const num1=“das”(具备let的功能,但是是一个常量,不能二次修改) const n.常量 adj.不变的,恒定的
数组定义 let=Array(); let=new Array(); let=[];
函数定义 function 函数名(){}
弹窗:
alert()-警告(必须点击)
confirm("文字")-确认(可以点击确定取消) 有返回值 确认-true 取消-false
prompt("文字-请输入学号",默认值) 有返回值 带文本框的弹窗,返回值是输入的内容 prompt n.提示
弹窗可以使用转义字符 \n换行
流程控制
-
if。。else。。适用范围判断(0,null,undifined为false,除了他们仨都是true)
switch。。case。。适用于常量判断,(switch。。case。。只掉一次内存) -
for循环执行细节:let i-初始条件只执行一遍 --》然后执行循环条件判断,符合条件执行循环体,i自增 --》不断执行循环条件判断(不再执行初始化条件),执行循环体,i自增,直到达到判断条件;
forin(JS中的增强for循环) -
对象[属性名]--只访问属性的值,无法增加属性,但是可以改变属性
delete 对象[属性名] 只是把属性里面的值删除掉了(变成了undefined),但是属性还存在 -
&&,||是有返回值的,返回能判断出结果的那个值(原先的值,不是ture或者false)
-
!!a 强制类型转换-转成boolean值
- 号不能强转,只能链接
-
- / %可以强转,但是转换不了的结果为NAN
== 转换成一个类型比较,相等返回true
=== 不转换直接比
- / %可以强转,但是转换不了的结果为NAN
闭包
是指有权访问另一个函数作用于的变量的函数(就是你想访问哪个函数中的变量,就让该函数return一个函数,return的这个函数,可以访问该函数的变量,return的这个函数就叫做闭包)
原型
就是所有构造函数的原型属性Prototype(就是java中的Object类,可以通过对原型添加属性,所有通过该构造函数构造的对象都有这个属性)
Json字符串
key=" " 空格是key的名字 key只能是字符串 value=任意类型
存储方式:{key:value,key:value}
Document方法
-
获取节点GetElementBy..... 获取到节点对应---》获取到的就是原始文本
-
document.querySelector("选择器(.class #id div)")获取到对应选择器(标签和里面的子标签都会抓到)-----------只能获取到第一个选择器 (常用id
-
document.querySelectorAll(返回一个集合)(标签和里面的子标签都会抓到)(常用class 标签
-
节点.innerHtml=str(html便签结构,也可以拿到里面的所有结构)(替换的话里面的东西都会被覆盖)(innerHTML的值就是字符串)
-
节点.innerText=str(写文字,也可以拿到里面的所有文字)(替换的话里面的东西都会被覆盖)
-
节点.value=str字符串(往文本框内容区加东西
-
节点.addEventListener(事件类型-没有on,函数)节点.addEventListener(事件类型,函数名)
节点.事件=函数 也能添加事件 节点.事件=null 删除事件
事件(交互事件):
-------在标签中添加的事件,事件发生时执行函数。
onclick="函数" 单击事件
ondblclick="函数" 双击时间
onblur="函数" 失去焦点 blur n.模糊 v.使模糊
onfocus="函数" 获得焦点
onchange="函数" 改变事件
onload="函数" 加载事件 (一般挂载在body上
onsubmit当表单提交时(挂载在form标签上 return false/true ~不但要写在函数体内,还要写在事件上 事件="return 函数"~
事件冒泡:
容器内的元素触发事件的同时也出发了容器的事件(内部影响了外部) event.stopPropagation()停止事件冒泡
DOM:document 文档对象模型
* .createElement()创建HTMl元素-》可以用setAttribute(Key,Value)为标签设置属性-》.innerHTML,innerText=设置里面的内容
* .querySelector(ALL)(先择元素的方式)来获取html中的元素
元素.append在元素内追加进我们创建的元素*******
.remove删除调用的元素
.childNodes 获取所有类型的节点
.children HTML的节点
元素.属性 只能获取原生属性节点
.getAttribute(属性) 能拿到任何属性节点
.setAttribute(属性,value) .removeAttribute(属性,value)
.className ·类·名属性
.childNodes拿到所有节点-text和html(什么都认识)
.children拿到HTML类型节点
文档本身就是一个文档对象document
* 所有的HTML元素都是元素节点
* 所有的HTML属性都是属性节点
* 元素的文本是文本节点
BOM:·window· 浏览器对象模型 window=document+任务栏
* 回调函数:一个函数的参数可以是另一个函数(调用的地方传参)**********在函数调用函数
* 定时函数:setTimeout(函数,延迟时间) 定时执行这个函数 setInterval(函数,延迟时间)设置循环定时执行
* 清除定时函数:clearTimeout(定时函数)清除这个定时函数 clearInterval(定时函数)清除这个定时函数
* .localstorage本地存储在127.0.0.1中 (本地会一直存在除非手动删除-与session相反): 方法 .setItem(key,value) .getItem(key) .removeItem(key) .clear()
* .confirm确认弹窗有返回值
* .prompt(String msg,默认值)
* .alert(String msg)警告
* .history历史记录 方法 .forword()前进 .back()后退 .go(number-步长) 正数前进,复数后退
* .location跳转位置(在自己身体内打开-请求转发) .href 地址 .reload()刷新页面
* .screen .height bom高度 .availHeight document高度
* .close()关闭当前窗口
.open() 打开一个新窗口-请求重定向
ECMA和JS
ECMAscript:官方规范,其他语言要遵守我的规范来具体实现
JavaScript:ES的落地语言,我们真正操作的语言(不依赖HTML,而是依赖于浏览器)
JS函数
eval()函数:会把字符串解析为JS表达式进行执行
parseInt(数字字符串转数字)
String(转成字符串)
数组的方法:
- .join(值)用值代替逗号就整个数组拼成一个字符串(与字符串的split方法相反)
- .push(值)在数组末尾加入‘值’元素
- .slice(start,end)从start截取到end(左闭右开)返回一个新数组(字符串也有这个相同的方法)
- .splice(index,howmany,item1,.....,itemX)不会返回新数组,改变了原数组
**script标签只做一件事(引入其他js或者写JS),但是可以定义多个标签 **