JS中的事件

[JS中的事件分类]
* 1、鼠标事件:
* click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup
*
* 2、键盘事件:
* keydown: 键盘按下去触发
* keypress: 键盘按下并松开的瞬间触发
* keyup: 键盘抬起时触发
*
* [注意事项:(了解)]
* ① 执行顺序: keydown——keypress——keyup
* ② 长按时,会循环不断的执行keydown-keypress
* ③ 有keydown事件,不一定有keyup事件(事件触发过程中,鼠标移走,可能就没有keyup)
* ④ keypress只能捕获字母、数字、符号键,不能捕获功能键;keydown/keyup基本可以捕获所有功能键(特殊除外)
* ⑤ keypress区分大小写,keydown和keyup不区分;
* ⑥ keydown/keyup区分主键盘和小键盘,keypres不区分;
*
* [确定键盘触发按键]
* ① 在触发函数中,传入参数e,代表按键时间;
* ② 通过e.keyCode ,确认按键Ascii码值,进而确定按键;
* ③ 所有浏览器系统的写法(一般不必要):
* var evn = e||event; //取到键盘事件
* var code = evn.keyCode||evn.which||evn.charCode;//取到按键编码

JS中的事件分类
* 1、鼠标事件:
* click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup
* 2、键盘事件
* keydown:键盘按下时触发
* keyup:键盘抬起时触发
* keypress:键盘按下并抬起时触发
* [注意事项]
* ①执行顺序:keydown-keypress-keyup
* ②长按时,会不断执行keydown,keypress
* ③有keydown事件不一定有keyup事件,比如事件触发时,鼠标移走,可能就没有keyup;
* ④keypress事件只能捕获字母、数字、符号键,不能捕获功能键,可以捕获大小写;keydown/keyup基本可以捕获所有功能键(特殊除外),可以区分主键盘和小键盘
* 不区分大小写
*
* 【确定键盘触发按键】
* ①在触发函数中传入函数e,代表按键事件:
* ②通过e.keyCode确认按键Ascii码值,进而确定按键;
* ③兼容所有浏览器系统的写法(一般不必要):
* var evn = e||event 取到键盘事件
var code = evn.keyCode||evn.which||evn.charCode; 取到按键编码

JS中的内置对象

JS中的数组
* 1、数组的概念:在内存中连续存储的多个有序元素的结构
* 元素的顺序,称为下标,通过下标查找对应元素
* 2、数组的声明:
* ①通过字面量声明:var arr1=[];
* JS中同一数组可以储存多种数据类型(但一般同一数组只用于存放同一种数组类型)
* 例如: var arr1 = [1,"2",true,{},[]];
* ②new关键字声明:var arr2 = new Array(参数);
* >>>参数可以为:
* a:空,声明一个没有指定长度的数组
* b:数组的长度length,声明一个指定长度的数组,但数组的长度随时可变可追加
* 最大长度为(0~2^32-1);
* c:数组默认的N个值,new Array(1,"2",true);相当于[1,"2",true]
* 3、数组中元素的读写/增删
* ①读写:通过下标来访问元素,例如arr[2];
* ②增删:delete arr[n];删除数组的第n+1个值,但数组长度不变,对应位置的值为undefined
* arr3.push(7);数组最后增加一个值,相当于arr3[arr3.length]=7;
* arr3.unshift(0);数组的第0位插入一个值,其余位数顺延
* arr3.pop();删除数组最后一位,与delete不同的是,pop执行后数组长度也会减少一个,
* 相当于arr.length-=1;
* arr3.shift(),删除数组第0位,长度也会减一;
* 4、数组中其他常用方法
* ①join("分隔符"),将数组用指定分隔符分隔,链接为字符串。参数为空时,默认用逗号分隔
* ②concat();将数组与多个数组的值连接为新的数组:
* [1,2].concat[3,4],[5,6]=[1,2,3,4,5,6];连接时中括号至多拆一层
* [1,2].concat([1,2],[3,4]])=[1,2,1,2,[3,4]];多层括号中,以二维数组形式存在
* ③push();数组最后增加一个数,unshift():数组开始增加一个数;返回数组新的长度
* ④pop();删除数组最后一个; shift():删除数组第一个; 返回被删除的数
* 注:调用上述方法,原数组均会改变。
* ⑤recerse();数组翻转,逆序排列,原数组被改变。
* ⑥slice(begin,end);【原数组不会被改变】截取数组中某一部分,成为新数组
* >>>传递一个参数:默认为begin index,从这个开始,截到最后一个
* >>>传递两个参数,截取从begin到end区间,左闭右开(包含begin,不含end)
* >>>参数可以为负数,-1表示最后一个;
* ⑦sort(function);【原数组会被改变】对数组进行排序,
* >>>不指定排序顺序,按照数值的ascii码值进行排列;
* >>>传入排序函数:默认两个参数a,b,如果返回值>0,则a>b,反之返回<0
arr3.sort(function(a,b){
return a-b;//b在前,a在后,升序排列
return b-a;//a在前,b在后,降序排列
/*if(a>b){
return 1;
}else(a<b){
return -1;
}else{
return 0;
}
二维数组&稀疏数组(了解)
①稀疏数组:数组并不含有从0开始到length-1的所有索引(length值闭实际元素个数多)
②二维数组:var arr4 = [[1,2,3],[4,5,6],[7,8,9],[0,1,2]]相当于四行三列的矩阵
取出二维数组元素:arr4[行号][列号];可使用循环遍历
③indexof(value,index)返回value值对应的下表位置,若未找到,返回-1
lastindexof(value,index)返回最后一个value对应的下标位置,若未找到,返回-1
>>>若未指定index参数,默认在数组所有元素中查找,若指定index,则从当前index开始,向后查询

6、引用数组类型:(数组/对象)赋值时将原变量的地址,赋给新变量 ,两个变量修改的是同一数据,所以修噶其中一个变量,另一个跟着变化
基本数据类型:赋值时,是将变量的值,赋值给新的变量,两个变量属于不同的内存空间,修改其中一个,互不干扰。

boolean类型
*/
var isTrue = true;//单纯变量
var isTrue1 = new Boolean(true);//一个Boolean类型的对象
console.log(isTrue1)
/*
* number类
* nember.Max_VALUE 可表示的最大数
* number.Min_VALUE 课表时的最小数
* .toString();将数值转为字符串 相当于num+空字符串
* .tolocaleString();将数字按照本地格式的顺序转为字符串。一般三个一组加逗号
* .tofixed(n):将数字转为字符串,保留n位小数,四舍五入
* .toPrecision(n):将数字格式化为指定长度,n=不含小数点的所有位数和
* .valueOf()返回number对象的基本数字值
*/

/* 重要!!!!
* 字符串String
* 1、属性str.length返回字符串的长度
* 2、方法:
* .toLocaleLowerCase()所有字符转为小写
* .toUpperCase()所有字符转为大写
* .charAt(n)截取字符串中得第n个字符
.indexOf("查询子串",index)查询从index开始的,第一个子串的索引,没找到返回-1,通数组indexOf()方法
.substr(begin,end)截取子串,只写一个从begin到结束,写两个则从begin到end,左闭右开。
.rePlace(old,new);将字符串中第一个old替换为new。第一个参数可以为普通字符串,也可以是正则表达式
(普通字符串只能匹配第一个,正则可以根据具体情况区分)
.split("")将字符串通过指定分隔符分为数组,传入""空字符串,将把单个字符传入数组
*/

/*date类
* 1、 new Date(); 拿到当前最新时间;
* new Date("2017,4,4,14:58:12") 设置指定时间
* 2、常用方法:
* .getFullYear(): 获取4位年份
* .getMonth(): 获取月份 0~11
* .getDate(): 获取一月中的某一天 1~31
* .getDay(): 获取一周中的某一天 0~6
* .getHours() 返回 Date 对象的小时 (0 ~ 23)
* .getMinutes() 返回 Date 对象的分钟 (0 ~ 59)
* .getSeconds() 返回 Date 对象的秒数 (0 ~ 59)

自定义对象

【自定义对象】
* 1、基本概念
* ①对象概念:对象是包含一系列无序属性和方法的集合
* ②对象中的数据:是以键值对的形式存在的
* ③属性:描述对象特征的一系列变量 【对象中的变量】
* ④方法:描述对象行为的一系列方法 【对象中的函数 】
*
*
* 2、对象的声明:
* ①字面量声明 var obj = {
* key1=value1
* key2=value2
* func:function(){};
* };
* 对象中的键,可以是任何数据类型,但一般用作普通变量名(不需要"")即可
* 对象中的值可以是任何数据类型,单字与值符串必须用""包裹
* 多组键值对之间用英文逗号分隔,键值对的键与值之间英文冒号分隔
*
* ④new关键字var lisi = new Object();
lisi.name="李四"
lisi.say = function(){
console.log("我是"+this.name)
}
lisi.say();
*
* 3、属性和方法的读写
* ①.运算符:对象内部:this.属性名 this.方法名()
* 对象外部:对象名.属性名 对象名.方法名
* >>>如果key中包含特殊字符,则无法使用第①种方式,必须使用第②种
* >>>对象中,直接写变量名,默认调用全局变量,如果需要调用对象自身属性,则需要通过this关键字
* ②通过["key"]调用 对象名["属性名"] 对象名["方法名"]()
* ③删除对象的属性和方法:delete 对象名.属性名/方法名
*

JS续的更多相关文章

  1. 前端 JS&&DOM续

    JS续 1.序列化 JSON.stringify(obj)   序列化 JSON.parse(str)        反序列化 2.转义 decodeURI( )                   ...

  2. Web大文件上传控件-示例更新-Xproer.HttpUploader6.2

    版权所有 2009-2016荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  3. angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)

    昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...

  4. 从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)

    1.server端 支持数学运算的服务器,服务器的返回结果用json对象表示. math-server.js //通过监听3000端口使其作为Math Wizard的后台程序 var math = r ...

  5. 从零开始学习Node.js例子四 多页面实现数学运算 续一(使用connect和express框架)

    1.使用connect框架 .use方法用于绑定中间件到connect服务器,它会配置一系列在接到请求时调用的中间件模块,此例中我们要配置的中间件有favicon logger static rout ...

  6. 谈谈Ext JS的组件——布局的用法续二

    绝对布局(Ext.layout.container.Absolute) 绝对布局让我回忆到了使用Foxpro开发的时候,哪时候的界面布局就是这样.通过设置控件的左上角坐标(x.y)和宽度来进行的,由于 ...

  7. 谈谈Ext JS的组件——布局的使用方法续二

    绝对布局(Ext.layout.container.Absolute) 绝对布局让我回想到了使用Foxpro开发的时候,哪时候的界面布局就是这样,通过设置控件的左上角坐标(x,y)和宽度来进行的,因为 ...

  8. 在Node.js使用Promise的方式操作Mysql(续)

    在之后的开发中,为了做一些事务开发,我把mysql的连接代码从之前的query函数中分离出来了,直接使用原生的方法进行操作,但发现还是有点问题 原因是原生的node-mysql采用了回调函数的方式,同 ...

  9. js 实现图片上传 续

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

随机推荐

  1. iOS CoreImage之滤镜简单使用

    代码地址如下:http://www.demodashi.com/demo/11605.html 老骥伏枥,志在千里 前记 最近一直在研究图像处理方面,既上一篇iOS Quart2D绘图之UIImage ...

  2. spring事务管理源码解析--加了@Transactional注解后Spring究竟为我们做了哪些事情?

    大家都知道事务管理是基于AOP的,对AOP还不了解的请自行百度. 实现一个事务需要以下几步:1.获取数据库连接  2.执行数据库操作  3.如果2步骤发生异常就回滚,否则就提交  4.释放资源. 然后 ...

  3. C# 匿名类型 分组 求和

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. springboot学习(五) 全局异常处理

    创建全局异常处理 /** * 全局异常配置管理 */ @ControllerAdvice public class GlobalExceptionConfig extends ResponseEnti ...

  5. 保存Hive查询结果的方法

    很多时候,我们需要将Hive的查询(select)结果保存起来,方便进一步处理或查看.在Hive里面提供了不同的方式来保存查询结果,在这里做下总结: 一.保存结果到本地 方法1:调用hive标准输出, ...

  6. Hive substr 函数截取字符串

    开发中,经常进行模糊查询或者进行截取字符串进行模糊匹配,常用的就是substr函数或者substring函数. 使用语法: substr(string A, int start),substring( ...

  7. MySql(零):Linux(CentOS7)下安装和配置MySQL5.7.20(安装包安装)

    一.下载安装包 1.在官网下载MySQL5.7安装包 mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz. 下载地址:https://dev.mysql.com/do ...

  8. Atitit. camel分词器 分词引擎 camel拆分 的实现设计

    Atitit. camel分词器 分词引擎 camel拆分 的实现设计 1. camel分词器1 1.1. 实现的界定符号大写字母小写字母数字1 1.2. 特殊处理 对于JSONObject 多个大写 ...

  9. Django学习之网站图标

    首先,你要有一个.ico的文件,可以从easy icon直接搜索一个图标. 1.先导入RedirectView,是一个通用类视图. from django.views.generic.base imp ...

  10. codeblocks中给GCC编译器加参数

    在使用gcc命令行编译的时候可以使用gcc xxx.c -o xxx.exe -std=c99来使用c99标准编译 但是在codeblocks中默认是不使用c99标准编译的,如何加参数呢? Setti ...