- 浏览: 112472 次
- 性别:
- 来自: 江西
文章分类
最新评论
-
antsshadow:
如何在IE6、IE7、IE8中使用HTML5 canvas -
fei_6666:
请问 $('#livemargins_contro' ).bg ...
jquery.bgiframe.js解决下拉列表框被遮盖(iE 6下存在的情况) -
geliyang:
function(value,element)这里的value ...
Jquery Validator 的addMethod用法備忘
本期主题:正则表达式 call(),apply(),callee,caller,cookie方法,setInterval(),clearInterval(),setTimeout() ,clearTimeout()
详细看附件例子,还是写的比较简单的。
1.关于cookie的函数:
- /**
- * cookie操作工具.
- * 使用方法:保存值:CookieTool('name','1',{expires: 7}) //表示保存一个cookie值为1,键值为name,失效时间7天以后
- * 取值:CookieTool('name') //返回1
- * @param {} name
- * @param {} value
- * @param {} options
- * @return {}
- */
- CookieTool = function (name, value, options) {
- if ( typeof value != 'undefined' ) {
- options = options || {};
- if (value === null ) {
- value = '' ;
- options.expires = -1;
- }
- var expires = '' ;
- if (options.expires && ( typeof options.expires == 'number' || options.expires.toUTCString)) {
- var date;
- if ( typeof options.expires == 'number' ) {
- date = new Date();
- date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
- } else {
- date = options.expires;
- }
- expires = '; expires=' + date.toUTCString();
- }
- var path = options.path ? '; path=' + (options.path) : '' ;
- var domain = options.domain ? '; domain=' + (options.domain) : '' ;
- var secure = options.secure ? '; secure' : '' ;
- document.cookie = [name, '=' , encodeURIComponent(value), expires, path, domain, secure].join( '' );
- } else {
- var cookieValue = null ;
- if (document.cookie && document.cookie != '' ) {
- var cookies = document.cookie.split( ';' );
- for ( var i = 0; i < cookies.length; i++) {
- var cookie = trim(cookies[i]);
- if (cookie.substring(0, name.length + 1) == (name + '=' )) {
- cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
- break ;
- }
- }
- }
- return cookieValue;
- }
- };
2.关于一个可以查看js对象的js函数,很酷的方法:
- /**
- * 用来查看一个对象的属性
- */
- function debugObjectInfo(obj){
- traceObject(obj);
- function traceObject(obj){
- var str = '' ;
- if (obj.tagName&&obj.name&&obj.id)
- str="<table border='1' width='100%'><tr><td colspan='2' bgcolor='#ffff99'>traceObject tag: <" +obj.tagName+ "> name = \"" +obj.name+ "\" id = \"" +obj.id+ "\" </td></tr>" ;
- else {
- str="<table border='1' width='100%'>" ;
- }
- var key=[];
- for ( var i in obj){
- key.push(i);
- }
- key.sort();
- for ( var i=0;i<key.length;i++){
- var v= new String(obj[key[i]]).replace(/</g, "<" ).replace(/>/g, ">" );
- str+="<tr><td valign='top'>" +key[i]+ "</td><td>" +v+ "</td></tr>" ;
- }
- str=str+"</table>" ;
- writeMsg(str);
- }
- function trace(v){
- var str= "<table border='1' width='100%'><tr><td bgcolor='#ffff99'>" ;
- str+=String(v).replace(/</g,"<" ).replace(/>/g, ">" );
- str+="</td></tr></table>" ;
- writeMsg(str);
- }
- function writeMsg(s){
- traceWin=window.open("" , "traceWindow" , "height=600, width=800,scrollbars=yes" );
- traceWin.document.write(s);
- }
- }
3.正则表达式:
g 代表全局匹配
m 代表可以进行多行匹配
i 代表不区分大小写匹配
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
* 匹配前面的子表达式零次或多次. 等价于{0,}
+ 匹配前面的子表达式一次或多次. 等价于{1,}
? 匹配前面的子表达式零次或一次. 等价于[0,1} , 当该字符跟在任何一个其他限制符(*, +, ?, {n}, {n,},
{n,m})
后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串
"oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
\d 匹配一个数字字符. 等价于 [0-9]
\D 匹配一个非数字符. 等价于 [^0-9]
\w ,等价于 "[A-Za-z0-9_]"
\W 匹配任何非单词字符,等价于 "[^A-Za-z0-9]"
\s 匹配任何空白字符, 包括空格 制表符 换页符 等等. 等价于[\f\n\r\t\v]
\S 匹配任何非空白字符. 等价于 [^\f\r\n\t\v]
\b 匹配一个单词边界,也就是指单词和空格间的位置。
\B 匹配非单词边界。
正则表达式常用js方法:
- /**
- * 在源字符串中查找满足要求的子串.
- * @return {}
- */
- function MatchDemo() {
- var r, re; // 声明变量。
- var s = "The rain in Spain falls mainly in the plain" ;
- re = new RegExp( "ain" , "g" ); // 创建正则表达式对象。
- r = s.match(re); // 在字符串 s 中查找匹配。
- return (r);
- }
- /**
- * 返回在源字符串中的满足正则表达式的全部的字串和位置信息.
- */
- function RegExpTest() {
- var ver = Number(ScriptEngineMajorVersion() + "."
- + ScriptEngineMinorVersion())
- var ans = '' ;
- if (ver >= 5.5) { // 测试 JScript 的版本。
- var src = "The rain in Spain falls mainly in the plain." ;
- var re = /\w+/g; // 创建正则表达式模式。
- var arr;
- while ((arr = re.exec(src)) != null )
- ans += arr.index + "-" + arr.lastIndex + arr + "\t" ;
- } else {
- ans = "请使用 JScript 的更新版本" ;
- }
- return ans;
- }
- /**
- * 对源字符串进行正则表达式检查,看是不是符合正则表达式.
- */
- function TestDemo() {
- var s1;
- var source = "abcdefg" ;
- var regex = /\w+/g; // 创建正则表达式模式。
- if (regex.test(source))
- s1 = " contains " ;
- else
- s1 = " does not contain " ;
- return ( "'" + source + "'" + s1 + "'" + regex.source + "'" );
- }
- /**
- * 在源字符串中查找正则表达式的字串.
- * @return {}
- */
- function SearchDemo() {
- var r, re;
- var s = "The rain in Spain falls mainly in the plain." ;
- re = /falls/i;
- r = s.search(re);
- return (r);
- }
4.很值得学习并要使用好的方法,call():
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
可选项。将被传递方法参数序列。
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
简单的例子:
- function add(a,b)
- {
- alert(a+b);
- }
- function sub(a,b)
- {
- alert(a-b);
- }
- add.call(sub,3,1);
- //这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);
稍微复杂的例子:
- function Class1()
- {
- this .name = "class1" ;
- this .showNam = function ()
- {
- alert(this .name);
- }
- }
- function Class2()
- {
- this .name = "class2" ;
- }
- var c1 = new Class1();
- var c2 = new Class2();
- c1.showNam.call(c2);
- //call 的意思是把 c1 的方法放到c2上执行,原来c2是没有showNam() 方法,现在是把c1 的showNam()方法放到 c2 上来执行,所以this.name 应该是 class2,执行的结果就是 :alert("class2");
多重继承的例子:
- function Class10()
- {
- this .showSub = function (a,b)
- {
- alert(a-b);
- }
- }
- function Class11()
- {
- this .showAdd = function (a,b)
- {
- alert(a+b);
- }
- }
- function Class2()
- {
- Class10.call(this );
- Class11.call(this );
- }
5.apply函数:
Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)
实现类似call的继承的效果:
- function Person(name,age){ //定义一个类,人类
- this .name=name; //名字
- this .age=age; //年龄
- this .sayhello= function (){alert( "hello" )};
- }
- function Print(){ //显示类的属性
- this .funcName= "Print" ;
- this .show= function (){
- var msg=[];
- for ( var key in this ){
- if ( typeof ( this [key])!= "function" ){
- msg.push([key,":" , this [key]].join( "" ));
- }
- }
- alert(msg.join(" " ));
- };
- }
- function Student(name,age,grade,school){ //学生类
- Person.apply(this ,arguments);
- Print.apply(this ,arguments);
- this .grade=grade; //年级
- this .school=school; //学校
- }
- var p1= new Person( "jake" ,10);
- p1.sayhello();
- var s1= new Student( "tom" ,13,6, "清华小学" );
- s1.show();
- s1.sayhello();
- alert(s1.funcName);
使用apply进行数组参数的函数的优化,很酷的方法:
- Math.max后面可以接任意个参数,最后返回所有参数中的最大值。
- 比如
- alert(Math.max(5,8)) //8
- alert(Math.max(5,7,9,3,1,6)) //9
- 但是在很多情况下,我们需要找出数组中最大的元素。
- var arr=[5,7,9,1]
- alert(Math.max(arr)) // 这样却是不行的。一定要这样写
- function getMax(arr){
- var arrLen=arr.length;
- for ( var i=0,ret=arr[0];i<arrLen;i++){
- ret=Math.max(ret,arr[i]);
- }
- return ret;
- }
- 用 apply呢,看代码:
- function getMax2(arr){
- return Math.max.apply( null ,arr);
- }
下面是另外一个例子,用来合并两个数组:
- 再比如数组的push方法。
- var arr1=[1,3,4];
- var arr2=[3,4,5];
- 如果我们要把 arr2展开,然后一个一个追加到arr1中去,最后让arr1=[1,3,4,3,4,5]
- arr1.push(arr2)显然是不行的。 因为这样做会得到[1,3,4,[3,4,5]]
- 我们只能用一个循环去一个一个的push(当然也可以用arr1.concat(arr2),但是concat方法并不改变arr1本身)
- var arrLen=arr2.length
- for ( var i=0;i<arrLen;i++){
- arr1.push(arr2[i]);
- }
使用apply的话:
发表评论
-
在js文件中显示jquery的智能提示VS2010
2012-05-25 15:30 0///<reference path="jqu ... -
关于浏览器内核的一些概念
2011-12-14 11:37 886什么是浏览器内核 要想搞清楚浏览器内核是什么, ... -
将手机网站做成手机应用的JS框架
2011-11-30 14:26 978将手机网站做成手机应用的JS框架 发表于 2010年09月1日 ... -
jquery实现无缝图片滚动
2011-10-24 13:58 959<!DOCTYPE HTML> <html& ... -
JS变量的作用域
2011-10-18 14:53 810JavaScript中变量的作用域非常奇特,如果不仔细研究,一 ... -
图片延迟加载之随滚动条显示
2011-10-18 14:38 1457经常上tudou网,发现tudou首页加载图片的功能很有意思, ... -
jquery实现tab选项卡
2011-09-08 10:36 1135<section class="recomme ... -
常用JS代码大全
2011-09-07 18:42 2202事件源对象 event.srcElement ... -
jquery实现自定义select表单
2011-09-06 19:09 925<!DOCTYPE html PUBLIC " ... -
jquery实现图片幻灯片切换代码
2011-09-01 19:20 672<!DOCTYPE html PUBLIC " ... -
js控制图片自动等比例缩放
2011-08-29 16:17 887function imgfix(){ var maxw ... -
json返回数组的处理。
2011-08-16 12:28 1320后台返回json的格式为“{'name':'woe','age ... -
50个jQuery代码段帮你成为更好的JavaScript开发者
2011-08-16 12:26 11361. 如何创建嵌套的过滤器: -
javascript基础知识大集锦(1)
2011-08-15 12:42 805主要知识点:js数组,数字函数,字符串函数,表单验证,hash ... -
用 Javascript 实现检测、添加、移除样式(className)
2011-08-12 16:36 937前台脚本中,我们经常要操作页面元素的样式,比如标签页切换时 ... -
iframe自适应高度
2011-08-08 17:45 703父页: <script type="text ... -
jQuery插件通用的框架
2011-06-07 12:05 888/* * tableUI 0.1 * ... -
jQuery图片切换,轮播效果
2011-05-26 18:06 2583<!DOCTYPE html PUBLIC " ... -
jQuery图片切换,轮播效果
2011-05-26 13:34 2065用jQuery实现迅雷首页(http://xunlei.com ... -
(function($){}) 和$(function(){}) 和$(function($){}) 区别
2011-04-18 15:51 927一、先看 jQuery(function(){ } ...
相关推荐
以下是一些关于JavaScript数组操作的基础知识: 1. **定义数组**:在JavaScript中,可以使用`new Array()`或者直接用方括号`[]`来定义数组。例如: ```javascript var pageIds = new Array(); var pageIds = [];...
正则表达式 call(),apply(),callee,caller,cookie方法,setInterval(),clearInterval(),setTimeout() ,clearTimeout()
以上是JavaScript的一些基础知识点,希望这些内容能帮助你在日常开发中更好地理解和运用JavaScript,提高代码质量。在实践中不断学习和探索,你会发现JavaScript是一个功能强大且充满乐趣的语言。
1. JavaScript-1.doc:可能涵盖了JavaScript的基础知识,包括变量、数据类型(如字符串、数字、布尔值、null、undefined)、操作符(算术、比较、逻辑)、流程控制(条件语句if...else、switch,循环for、while、do....
这个"JavaScript经典实例集锦"涵盖了JavaScript编程中的各种重要概念、技巧和最佳实践,对于提升JavaScript技能和理解力有着极大的帮助。让我们逐一探讨这些知识点。 1. **基础语法**:JavaScript的基础包括变量...
1. **基础语法**:JavaScript的基础包括变量声明(var, let, const)、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、操作符(如算术、比较、逻辑和赋值操作符)以及流程控制(条件语句if/else...
下面将详细探讨JavaScript3D特效的核心知识点及其应用。 1. **WebGL**:WebGL是JavaScript的一个API,它允许在浏览器中进行硬件加速的3D图形渲染。这是许多3D特效的基础,通过它可以创建复杂的3D场景,并与用户进行...
在这个“JavaScript源代码集锦”中,我们可以期待找到以下几类知识点: 1. **基础语法**:包括变量声明(var, let, const)、数据类型(字符串、数字、布尔、null、undefined、对象、数组、符号等)、操作符(算术...
它构成了互联网上大部分内容的基础。...掌握这些基础知识是构建和理解网页内容的关键步骤。在实际开发中,还会涉及更多的HTML标签、CSS样式和JavaScript交互,这些都是构建动态、交互式网页的重要组成部分。
标题和描述提到的“JavaScript 语法集锦 脚本之家基础推荐”表明了接下来要介绍的内容是关于JavaScript编程语言中常用函数和语句的总结。这些内容对于初学者和有经验的开发者都是有益的,因为它提供了一个实用的参考...
JavaScript是一种广泛应用于网页和网络应用的编程...以上就是根据"JavaScript集锦"这一主题可以推测出的一些关键知识点。通过深入学习和实践这些内容,开发者可以增强对JavaScript的理解,并提升实际项目中的开发能力。
2. **控制流**:掌握`if...else`、`switch`语句以及循环(`for`, `while`, `do...while`)结构,是编写逻辑代码的基础。另外,`break`和`continue`用于控制循环流程。 3. **函数**:了解如何声明和调用函数,包括...
让我们深入探讨一下JavaScript在这些特效中的核心知识点。 1. **DOM操作**:JavaScript通过Document Object Model(DOM)来操作HTML和XML文档。常见的DOM操作包括元素的选择(`document.getElementById`,`...
以上只是JavaScript经典效果集锦中的一部分知识点,实际的学习过程中,还需要结合具体的代码实例进行深入研究和实践。在不断探索和学习中,开发者能够更好地掌握JavaScript,从而创造出更多富有创意和实用性的网页...
【BIRT知识集锦(基础知识大全)】 BIRT(Business Intelligence and Reporting Tools)是一个基于Eclipse的开源报表系统,主要用于Web应用程序的开发。其核心特性是建立在Java和J2EE平台之上,使得BIRT能够无缝...
通过对这些问题的解释和分析,可以帮助开发人员更好地理解 JavaScript 的基础知识和应用。 一、HTML 表单输入类型 JavaScript 中的 input 元素有多种类型,包括 text、radio、checkbox、file、button、image、...