写在前面:
学习网站:https://www.w3school.com.cn
<script src='url' ></script>
number、string、boolean、null、undefined |
typeof(xx)、=== |
true 1,false 0 false:0、NaN、空字符串、null、undefined true:其它数字和字符串、对象 |
Math | random、ceil、floor、round、PI |
Date | toLoaclString、getTime、getDay |
Function | function fun(){}、arguments、length |
Array | =new Array()、=[ ]、length、join、sort、reverse、concat、push、pop |
RegExp | [] \d \w ? * + {m,n} ^ $ 、=new RegExp("xxx")、=/ xxx /、test |
Globle | praseInt、isNaN、eval、encodeURI、decodeURI、encodeURIComponent、decodeURIComponent |
String | |
Boolean | |
Number |
Document | getElementById、getElementsByTagName、(ClassNAme、Name) |
Element | setAttribute、removeAttribute |
Attribute | |
Text | |
Comment | |
Node | parentNode、appendChild、removeChild、replaceChild |
Window | alert、confirm、prompt、open(url)、close、setTimeout、clearTimeout、setInterval、clearInterval |
Location | reload、href |
History | back、forward、go(n) |
事件:事件源.事件=function(event){ 监听器代码 }
1. 一些基本信息
是客户端脚本语言(脚本语言:不需要编译,可以直接被浏览器解析执行)
运行在浏览器中,每个浏览器都有JS解析引擎
让用户和页面的交互更强,控制html元素,让页面有动态效果
JavaScript = ECMAScript( 客户端脚本语言标准) + JavaScript自己特有的内容( BOM+DOM )
2. ECMAScript-----基础语法
在html中的位置
<script> 标签内,可以在任意位置 影响执行顺序,推荐head的最后 或者 body的最后
引入 .js 文件:<script src='url' ></script>
一些规则
语句分号结尾,一行只有一条时 可省
定义变量 var:局部变量(省略var:全局变量)
注释
//
/* */
数据类型
原始数据类型:number(整数/小数/NaN)、string(单双引号均可)、boolean、null、undefined(没有初始化值)
引用数据类型
(补充Java:基本数据类型、引用数据类型)
typeof (变量名) :变量的类型;null输出的变量类型时object
变量
一小块存储数据的内存空间
JS是弱类型的语言,申请内存空间时不指定类型
var 变量名=初始化值
运算符
+ 可以时加号,也可以是正号
=== 全等于:比较之前先判断类型,类型不同的直接不等
JS的比较:类型相同的正常比较(字符串按照字典顺序);类型不同的先类型转换再比较(string会先转为number)
JS的运算:类型不对时,也会先自动进行类型转换
类型转换
string转number:不是数字的转为NaN
boolean转number:true 1 ;false 0
number转boolean:0 false;非0 true;NaN false
string转boolean:空串 false;其它 true
null undefined转boolean:false
对象 转boolean:true
(补充:防止空指针可以写成:if(obj){ } )
流程控制
switch语句可以接收人意类型
(补充java中switch可以接收的类型:byte、short、int、char、枚举、String)
3. ECMAScript-----JS对象
基本对象
Boolean、String、Number、Array、Date、Math、RegExp、Function、Global
Function对象(方法)
定义方法:var fun=new function(参数列表, 方法体)---不推荐
function fun(参数){ 方法体 }
var fun=function(参数){ 方法体 }
属性:length 形参个数
方法中有个内置对象 arguments数组,封装了所有参数,所以方法定义可以没有参数列表
方法调用只跟方法名有关,与参数无关;两个方法名相同时,会覆盖
Array对象
定义数组:var arr=new Array( 元素列表/ 默认长度 ) -----一个值时表示默认长度(空也可以)
var arr=[ 元素列表 ]
特点:元素类型可变、长度可变(一个数组内可以有多个类型)
属性:length
方法:join('符号') 拼接成字符串;不指定符号时,默认逗号
push(xx, xx, xx) 添加元素( pop() 删除最后一个元素 )
sort() 排序、reverse() 反向、concat(arr2) 连接数组
Date对象
var date=new Date();
方法:toLocalString() 返回当地时间表示格式(年/月/日)
getDay()、getMonth()、getTime()毫秒值
Math对象
Math.方法()
属性:PI 圆周率
方法:random() [0,1)的随机数、ceil 向上取整、floor 向下取整、round 四舍五入
RegExp 正则(字符串的组成规则)
正则通用规则:https://blog.csdn.net/poppy_rain/article/details/98380789
创建:var reg=new RegExp("正则表达式") -----注意反斜杠需要转义( \\ )
var reg=/ 正则表达式 /
方法:test(参数) 验证是否符合正则;返回boolean
Global 全局对象
封装的方法调用时不用写对象名,直接写方法名
encodeURI(xx) 对xx汉字进行url编码(%字节%字节)------decodeURI解码
encodeURIComponent(xx) 编码的字符更多(把符号也编码了)----decodeURIComponent
praseInt(xx) 字符串转为数字(逐一判断每个字符是不是数字,直到不是数字,将前面的转为数字;没有数字转为NaN)
isNaN(xx) 是不是NaN(注意:NaN不等于NaN,所以要用isNaN来判断)
eval(xx) 将字符串转为JS脚本执行
4. DOM:文档对象模型(树形)
基础信息
控制HTML文档内容
获取页面标签对象:var name=document.getElementById("id值")
设置标签属性值:a.属性名="属性值"
例:name.clasName="xxx"、name.style.fontSize="20px"、name.innerHTML 设置/获取标签体内容
w3c DOM:核心DOM、XML DOM、HTML DOM
核心DOM 对象:Document文档、Element元素、Attribute属性、Text文本、Comment注释、Node节点(前五个的父对象)
document对象
用window创建,简写:document
方法--创建其它对象:createAttribute、createElement、createComment、createTextNode(值)
方法--获取元素对象:getElementById
getElementsByTagName、getElementsByClassName、getElementsByName
element对象
通过document获取和创建
方法:setAttribute(属性名, 属性值) 设置属性 、removeAttribute(属性名) 删除属性
node对象
属性:parentNode 当前节点的父节点
方法:appendChild(字节点) 添加字节点、removeChild(字节点) 删除、replaceChild 替换
5. BOM:将浏览器的各个部分封装成对象
window 窗口
调用方法时:不需要创建,直接使用,window可以省略-------方法名()
三种弹出框:alert 警告、confirm 确认取消, 确认true 取消false、prompt 用户输入, 返回用户输入值
两种开关方法:open(url) 打开新窗口, 可无参, 返回window对象、close 关闭窗口
四种定时器方法:setTimeout( 方法, 毫秒值 ) 只执行一次, xx毫秒后执行xx; 返回值id -------clearTimeout(id) 取消
setInterval 循环执行------clearInterval 取消
属性:获取其它BOM对象、获取DOM对象(document)
location 地址栏
方法:reload 刷新
属性:href 设置(赋值) / 获取url
history 历史记录(当前用户、当前页面)
属性:length 个数
方法:back 后退、forward 前进、go(n) 前往历史记录中的具体页面, 正数 前进n个, 负数 后退n个
6. 事件
事件:操作
如单击、双击等
onclick单击、ondblclick双击
onfocus获得焦点、onblur失去焦点
onmousedown鼠标按下、...up松开、...move移动、...over上、...out移开
onkeydown键盘按下、...up松开、...press按下并松开
onchange、onselect 级联下拉时用
onsubmit确认、onreset重置、onload加载完
事件源:组件
如按钮、文本框等
监听器:代码
方法里的this,指发生这个事件的事件源(当前标签的对象)
注册监听:将事件、事件源、监听器绑定到一起
当事件源上发生了某个事件,则执行监听器代码
语法:
事件源.事件=function(event){ 监听器代码 }
event.button 鼠标哪个键被点击了(左键:0)
event.keyCode 键盘的按键(回车:13)
window.οnlοad=function(){ 页面加载完执行代码 }
写到属性中:οnclick='return true' 或者 οnclick='return fun()' 事件源不需要返回值时不写return