js

JavaScript基础(一)

让人想犯罪 __ 提交于 2020-01-27 01:45:14
JS的基本语法要求 严格区分大小写 标识符命名要求(与java完全相同) 首个字符只能是 字母、下划线、美元符号 其他位置只能是 字母、下划线、美元符号、数字 变量的声明 JavaScript的声明必须要使用var关键字,声明方式有两种。 声明并且赋值:var 变量名 = 值 先声明再赋值: var 变量名; var = "666"; JavaScript中的每行代码都最好加上 ";" ,当然不加也不会报错,程序也能执行,但是为了规范,还有良好的习惯最好都加上去。 JavaScript的基本数据类型 类型标识符 类型说明 Undefined 表示一个未声明的变量或者已经声明但未赋值,或者不存在的属性。 String 字符串类型 Number 数字类型 Null 表示空类型 Boolean 布尔类型 JavaScrip变量的数据类型区分 JS中变量声明时,不会定义变量的数据类型,因此一个变量可以保存任意类型的数据。可以使用 typeof 变量 来判断变量的数据类型。 JavaScript代码的使用位置 在HTML代码中使用 这种使用方式非常少,主要是规范性,和维护性考虑。 在script标签中使用 通过在script标签中定义好JS代码,通过script标签唤醒浏览器中的JS解析器引擎来实现。并且script标签可以放到HTML文件的任意位置。这种使用的方式也不多。

js keyup、keypress和keydown事件

拥有回忆 提交于 2020-01-27 01:10:04
js keyup、keypress和keydown事件都是有关于键盘的事件 当一个按键被pressed 或released在每一个现代浏览器中,都可能有三种客户端事件。 keydown event keypress event keyup event keydown事件发生在键盘的键被按下的时候,接下来触发 keypress事件。 keyup 事件在按键被释放的时候触发。 这三个事件在页面中的使用方法如下例: <input id="testkeyevent" name="testkeyevent" onKeyUp ="keyup()" /> <input id="testkeyevent" name="testkeyevent" onkeypress ="keypress()" /> <input id="testkeyevent" name="testkeyevent" onkeydown ="keydown()" /> 对应的js函数: function keyup(){ ...} function keypress(){ ...} function keydown(){ ...} 注意: KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,拖动鼠标,那么将不会触发KeyUp事件。 KeyPress主要用来捕获数字( 注意:包括Shift+数字的符号 )、字母

js中const,var,let区别

醉酒当歌 提交于 2020-01-26 23:58:14
今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const, var, let的区别。 1.const定义的变量不可以修改,而且必须初始化。 const b = 2;//正确 // const b;//错误,必须初始化 console.log('函数外const定义b:' + b);//有输出值 // b = 5; // console.log('函数外修改const定义b:' + b);//无法输出 2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错。 var a = 1; // var a;//不会报错 console.log('函数外var定义a:' + a);//可以输出a=1 function change(){ a = 4; console.log('函数内var定义a:' + a);//可以输出a=4 } change(); console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4 3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。 let c = 3; console.log('函数外let定义c:' + c);//输出c=3 function change(){ let c = 6; console.log(

利用scrapy-splash爬取JS生成的动态页面

怎甘沉沦 提交于 2020-01-26 23:14:10
目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无法获得。 解决方案: 利用第三方中间件来提供JS渲染服务: scrapy-splash 等。 利用webkit或者基于webkit库 Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。 下面就来讲一下如何使用scrapy-splash: 利用pip安装scrapy-splash库: $ pip install scrapy-splash scrapy-splash使用的是Splash HTTP API, 所以需要一个splash instance,一般采用docker运行splash,所以需要安装 docker 。 安装 docker , 安装好后运行docker。 拉取镜像(pull the image): $ docker pull scrapinghub/splash 用docker运行scrapinghub/splash: $ docker run -p 8050:8050

js 对象

跟風遠走 提交于 2020-01-26 22:48:09
对象 1、简介 创建对象,key有两种展示方式:key为变量、key为字符 var a=3; var obj={ [a]:10, // 创建对象时,如果key是一个变量,就需要写在 [ ] 里 a:20 // 这个a是一个字符Key }; 描述对象下的属性 console.log(obj); // {3: 10, a: 20} key为变量时,创建时与创建完是不一样的 console.log(obj[a],obj[3]); // 10 10 变量key的描述方式 console.log(obj[“a”],obj.a); // 20 20 字符串key的描述方式 直接描述对象下有一个a的属性,值是1 obj.a=1; obj[“a”]=1; // 对象[字符key]=value; key就是属性名称,必须是字符串(ES5),不是字符串的会隐式转化为字符串 var a=“a”; obj[a]=1;//中括号的方式是可以带入变量作为key的,obj. 点 方法是不能使用变量;key是字符串时,必须加 " " object对象,属性名表示方式: 变量key—obj[a] (一种,除了使用变量名作为可以表示出来的属性名,但是可以使用变量的值为属性名,反正对象obj中真正存在的是变量的值,只不过他的值转化为了字符串); 字符key—obj[“a”] 或 obj.a (两种) 2、示例: (1

js实现冒泡排序

陌路散爱 提交于 2020-01-26 21:30:47
js实现冒泡排序 例:对数组 { 5,4,3,2,1 } 进行冒泡排序(从小到大) 冒泡排序(通常使用数组方法): 是一种算法,将一系列的数据按照一定的顺序进行排列 冒泡排序的原理: 首先定义一个数组,将所有需要进行排序的数据放到数组里,数据的长度为数据的个数(以n个为例) 第一次循环:将n个数据中最大的数据放到数组的最后一个元素的位置上 第二次循环:将n-1个数据中最大的数据放到数组的倒数第二个元素的位置上 … 第i次循环::将n-i+1个数据中最大的数据放到数组的倒数第i个元素的位置上 … var arr=[ 5, 4, 3, 2, 1 ]; var temp; for(i = 1; i <= arr.length; i ++){ // 第i次循环 for(j = 0; j < arr.length - i - 1; j ++){ // 将n-i+1个数据中最大的数据放到数组的倒数第i个元素的位置上 if(arr[j] > arr[j + 1] ){ //交换两个变量的值 temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1]= temp; } } } console.log(arr); 来源: CSDN 作者: 爱学习的W 链接: https://blog.csdn.net/weixin_44001013/article/details

打造遮罩弹出带有搜索框的zTree页面

半腔热情 提交于 2020-01-26 18:08:16
版权声明:模糊查询js代码部分引用原生zTree官方代码,任何商业应用请联系zTree官方。 先上一下效果图: 技术要求:点击input标签或者打开遮罩层按钮时,弹出zTree页面;zTree页面中在关键字后面的input输入框输入搜索信息后,zTree关键字高亮显示,并关闭其他子节点! zTree版本要求: ztree v3.5.19.1及以上,使用到getPath()方法 ztree.exhide扩展,使用到hideNode()方法​​​​​​​ 1. CSS、jQuery等底层框架选择: CSS部分:bootstrap3x,部分CSS用到了layui的样式、zTree样式采用metroStyle jQuery:jQuery3.3.1 2.代码: 2.1 html文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!-- Bootstrap core CSS --> <link rel="icon" href="js/bootstrap/favicon.ico"> <link rel="stylesheet" href="js/bootstrap/css/bootstrap.css"> <!-- IE10 viewport hack for Surface

使用requireJs进行模块化开发

删除回忆录丶 提交于 2020-01-26 17:37:08
requireJs使用 requireJs 使用require.js的第一步,是先去官方网站下载最新版本。 下载后,假定把它放在js子目录下面,就可以加载了。 <script src="js/require.js"></script> 有人可能会想到,加载这个文件,也可能造成网页失去响应。解决办法有两个,一个是把它放在网页底部加载,另一个是写成下面这样:  <script src="js/require.js" defer async="true" ></script> async属性表明这个文件需要异步加载,避免网页失去响应。IE不支持这个属性,只支持defer,所以把defer也写上。 加载require.js以后,下一步就要加载我们自己的代码了。假定我们自己的代码文件是main.js,也放在js目录下面。那么,只需要写成下面这样就行了:  <script src="js/require.js" data-main="js/main"></script> data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的main.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把main.js简写成main。 主模块的写法 上一节的main.js,我把它称为"主模块",意思是整个网页的入口代码

js左右无缝滚动

痞子三分冷 提交于 2020-01-26 17:22:43
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <html xmlns=" http://www.w3.org/1999/xhtml "> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script> function getObject(objectId) { if(document.getElementById && document.getElementById(objectId)) { // W3C DOM return document.getElementById(objectId); } else if (document.all && document.all(objectId)) { // MSIE 4 DOM return document.all(objectId); } else if (document.layers && document.layers[objectId]) { // NN 4 DOM..

JS笔记 ( 六 ) 闭包

北慕城南 提交于 2020-01-26 15:04:47
闭包 形成原因 只要内部函数保存到外部, 就会生成闭包 优点 & 缺点 优点 闭包可以让功能模块化, 让缓存可以进行, 可以做存储结构 可以实现封装, 以及属性的私有化 缺点 会导致作用域链不可释放, 造成内存泄漏 闭包示例 代码示例: 这个可以作为一个计数器来使用 function a ( ) { var num = 0 ; function b ( ) { num ++ ; console . log ( 'num: ' + num ) ; } return b ; //将函数返回到外部, 形成闭包 } var test = a ( ) ; //用来接收函数 执行效果: 作用 外部变量会接收生成闭包的函数的函数体以及闭包生成函数内的所有局部变量 如上面的例子, 显然执行完函数 a() 后, 函数会被销毁, 同时其局部变量表 AO 也会被一同销毁, 显然 AO 并没有被销毁, 而是被闭包一起带了出来. 若想一次返回多个函数, 可以在对象里面进行封装. 每次调用闭包中的函数时, 它的局部变量即函数体的 AO 都会被刷新 可以用立即执行函数来使变量值在循环中有效存入数组中 但凡生成索引的时候, 要注意有无闭包生成 来源: CSDN 作者: leon9dragon 链接: https://blog.csdn.net/leon9dragon/article/details