js代码

如何将Js代码封装成Jquery插件

亡梦爱人 提交于 2020-02-05 03:52:29
很多相同的Jquery代码会在很多页面使用,每次都复制粘贴太麻烦了,不如封装成一个Jquery插件就方便了,至于影响网页的速度不,我就没有测试了哈。 代码如下 这是一个自定闪烁打印文字的Jquery特效 HTML代码如下: <div id="code"> <p>/**</p> <p>*2014-2-12</p> <p>*代码自动闪烁输入</p> <p>*/</p> 2014-2-14,I want to say:<br /> Baby, I love you forever!<br /> </div> Js代码: function typewriter(id){ var $ele = document.getElementById(id); var str = $ele.innerHTML, progress = 0; $ele.innerHTML = ''; var timer = setInterval(function() { var current = str.substr(progress, 1); if (current == '<') { progress = str.indexOf('>', progress) + 1; } else { progress++; } $ele.innerHTML =str.substring(0, progress) +

关于JS 中正则表达式第一次判断为 true,第二次判断为false的问题。

ε祈祈猫儿з 提交于 2020-02-05 02:18:35
前言:今天在做自己的个人项目的时候,使用邮箱的正则表达式进行匹配登录验证时发现用户输入的同一个值在使用同一个正则表达式进行匹配时,会出现第一次匹配为 true,第二次匹配却是false的问题。 我是使用JS 正则表达式对象中的 RegExp.test() 方法进行匹配的,后面查阅了相关资料之后发现了一些端倪。 首先,正则表达式主要分为如下几种: 1、 i (不区分大小写) 2、g (全局匹配) 3、m (多行匹配) 而在设置为 g 标志时使用 RegExp.test() 和 RegExp.exec() 两个方法进行匹配时(我是使用 g 标志的),两者会根据自身的 lastIndex 属性所指向的位置作为下次匹配的开始点,一旦RegExp匹配过一次之后,lastIndex 属性会变更,这时候再次使用此RegExp匹配值时则会返回 false 。 问题代码如下: let reg = /^([a-zA-Z0-9_-])+@(sina|qq)+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/g console . log ( reg . test ( '15698@qq.com' ) ) // true console . log ( reg . test ( '15698@qq.com' ) ) // false , 出现问题 通常出现这个问题,可以有以下两种解决方案: 1

JS数据类型和变量

狂风中的少年 提交于 2020-02-04 23:47:06
一、定义变量的方式 1、隐式定义: < script type = "text/javascript" > a = "Hello JavaScript" ; alert ( a ) ; < / script > 2、显式定义: < script type = "text/javascript" > var a ; a = "true" ; alert ( a ) ; < / script > 二、类型转换 1、对于减号运算符,因为字符串不支持减法运算,所以系统自动将字符串转成数值。 2、对于加号运算符,系统直接将数值转为字符串,就成了两个字符串进行连接运算。 例: < ! DOCTYPE html > < html lang = "en" > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < meta http - equiv = "X-UA-Compatible" content = "ie=edge" > < title > Document < / title > < / head > < body > < script type = "text/javascript" > var a = "3

ANGULAR JS WATCH监听使用

徘徊边缘 提交于 2020-02-04 21:38:21
ANGULAR 监听使用: 当angular数据模型发生变化时,我们需要如果需要根据他的变化触发其他的事件。 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你。 $watch(watchExpression, listener, objectEquality); watchExpression 需要监控的表达式 listener 处理函数,函数参数如下 function(newValue,oldValue, scope) objectEquality 是否深度监听,如果设置为true,它告诉Angular检查所监控的对象中每一个属性的变化. 如果你希望监控数组的个别元素或者对象的属性而不是一个普通的值, 那么你应该使用它 <!DOCTYPE html> <html ng-app="app"> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <script src="assets/angular.min.js"></script> <script src="assets/js/jquery.min.js"></script> <script type="text/javascript"> var app=angular.module("app",[]);

js中单引号和双引号的区别

半世苍凉 提交于 2020-02-04 17:43:34
在js中单引号和双引号没有区别,都可以表示字符或字符串。 但是它们必须成对出现,不能前面用一个单引号,后面用一个双引号,这样会报错。 一般情况下,建议优先使用单引号包含字符串,这样做有几个好处: html中标签的属性是用双引号包裹,在js中如果要动态输出html内容,则用单引号将整体html代码包裹起来,而标签中的属性刚好用双引号,避免了转义 编写代码时,双引号需要按shift才可以输入,无形之中降低了敲代码的速度 虽然在语法上,单引号和双引号没有区别,建议优先选用单引号,如何字符串内还有引号,再用双引号,必要的时候还需要用\进行转义 来源: https://www.cnblogs.com/shiguangshuo/p/5227077.html

js 函数式用法(0)

我们两清 提交于 2020-02-04 15:15:08
Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; Number.method('integer', function ( ) { return Math[this < 0 ? 'ceil' : 'floor'](this); }); document.writeln((-10 / 3).integer( )); // -3 String.method('trim', function ( ) { return this.replace(/^\s+|\s+$/g, ''); }); document.writeln('"' + " neat ".trim( ) + '"'); 上述3段代码 展现了 函数式编程的魅力之一 函数1在初始函数处定义了一个函数 函数赋值给函数本体的 参数函数 函数2在定义的函数 因为在初始函数定义了method 所以 可以直接调用 并传递 函数到 prototype 中 函数3同理 来源: CSDN 作者: robotShuiMo 链接: https://blog.csdn.net/robotShuiMo/article/details/104169088

8.3题解

痴心易碎 提交于 2020-02-04 11:07:37
T1 [洛谷P3938] 题目很明显了,菲波那契,找规律无疑了,考场上的话,如果你对菲波那契足够敏感,那我想你是可以想到正解的,毕竟考场14个人AC,还算挺水的,如果实在想不出来,可以暴力打表找一下父亲,毕竟你是要不停的翻父亲,不管用什么方法吧,最后会发现$fa[x]=x-fib(x的出生月份-1)$,那我们再考虑一下对于$le12$的数据,他不停的翻父亲最多会翻多少遍,你会发现也就60遍,这个时候这道题就可做了,甚至不需要倍增,完全可以直接翻,但是由于你不知道深度,所以需要先把两个点分别翻一遍,找到深度,然后用类似于倍增$lca$的方法直接翻就可以了 1 #include<iostream> 2 #include<cstdio> 3 #include<set> 4 #define maxf 62 5 #define re register 6 #define ll long long 7 using namespace std; 8 const int L=1<<20|1; 9 char buffer[L],*S,*T; 10 #define getchar() ((S==T&&(T=(S=buffer)+fread(buffer,1,L,stdin),S==T))?EOF:*S++) 11 ll m; 12 ll f[maxf]; 13 set <ll> ccc; 14

说说JSONP

青春壹個敷衍的年華 提交于 2020-02-04 08:27:18
1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准; 2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>); 3、于是可以判断,当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理; 4、恰巧我们已经知道有一种叫做JSON的纯字符数据格式可以简洁的描述复杂数据,更妙的是JSON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据; 5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去。 6、客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了,这种获取远程数据的方式看起来非常像AJAX,但其实并不一样。 7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议

JS 堆栈内存底层机制

心已入冬 提交于 2020-02-04 07:10:43
JS的生存环境在浏览器中,浏览器执行JS代码需要: 1.从电脑内存中分配出一块内存,用来执行代码,这就是栈内存。 2.分配一个主线程用来自上而下执行JS代码(JS实际上是单线程运行) 下面画一张图说明下堆栈底层操作: 来源: CSDN 作者: -小龙人 链接: https://blog.csdn.net/qq_36330228/article/details/104112692

XSS中的同源策略和跨域问题

旧巷老猫 提交于 2020-02-04 06:38:28
转自 https://www.cnblogs.com/chaoyuehedy/p/5556557.html 1 同源策略 所谓同源策略,指的是浏览器对不同源的脚本或者文本的访问方式进行的限制。比如源a的js不能读取或设置引入的源b的元素属性。 那么先定义下什么是同源,所谓同源,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可。 可以看下面的几个示例来更加清楚的了解一下同源的概念: URL1 URL2 说明 是否允许通信 http://www.foo.com/js/a.js http://www.foo.com/js/b.js 协议、域名、端口都相同 允许 http://www.foo.com/js/a.js http://www.foo.com:8888/js/b.js 协议、域名相同,端口不同 不允许 https://www.foo.com/js/a.js http://www.foo.com/js/b.js 主机、域名相同,协议不同 不允许 http://www.foo.com/js/a.js http://www.bar.com/js/b.js 协议、端口相同,域名不同 不允许 http://www.foo.com/js/a.js http://foo.com/js/b.js 协议、端口相同,主域名相同,子域名不同 不允许