存档
-
seajs 使js开发模块化
seajs一个js类库,主要实现对js的模块化开发。 对于一个大项目或者是一个需要团队协作的项目,模块化开发 可以使得对代码的管理更规范和高效。seajs就是为了满足这种需求来的。 不过我个人可能会更需要js可以按需加载,因为有些类库不是所有的页面都 需要的,我的预期是js类库只有在需要的时候才去加载。 seajs可以通过require.async来实现按需加载。 最近在关注HTML5、CSS3的相关内容,这两个东西确实会给我们带来很不一样的体验。 还有js也很活跃,后端出了nodejs,前段有各种基础类库,还有MVC框架。 还有在js上发展起来的新语言 coffee script和dart,令人目不暇接。 确实很多东西(以论坛为主的网站将如何转型?)需要从底层变革一下了,因为他们周围的东西已经变了。 矛盾促使了这样的变革和发展。 更多内容:seajs.com
148 阅读 | 没有评论2011年12月11日 | 归档于 LAMP标签: JavaScript, seajs -
placeholder在非标准(IE)浏览器的实现
题目写得好拗口啊:) placeholder是HTML5的一个新特性,今天在考虑如何提示表单输入内容格式的时候,左思右想还是把提示内容放在input中最好。刚开始还不知道有placeholder这个东西,想要找一些js实现同样的效果,不久就发现原来HTML5中有placeholder这个标签属性,恰好支持这种效果。 高兴了没有一会,万恶的IE就把我拉回了现实。 方法就是比问题要多,找了N多用JS实现的placeholder的效果,最后发现一个相对完美的实现。 源码: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293// HTML5 placeholder plugin version 1.01 // Copyright (c) 2010-The End of Time, Mike Taylor, http://miketaylr.com // MIT Licensed: http://www.opensource.org/licenses/mit-license.php // // Enables cross-browser HTML5 placeholder for inputs, by first testing // for a native implementation before building one. // // // USAGE: //$(‘input[placeholder]‘).placeholder(); // <input type="text" placeholder="username"> (function($){ [...]
167 阅读 | 没有评论2011年11月26日 | 归档于 LAMP标签: HTML5, JavaScript -
Javascript 中怎样用变量调用函数(想PHP中那样)
在PHP中可以用变量调用函数,比如: 1234567<?php function say($words){ echo $words; } $f = ‘say’; $f(’hello’); ?> 今天在测试Javascript程序的时候,想起来JS中能不能也像PHP中那样用变量来调用函数呢? 12345function say(w){ alert(w); } var f = ‘say’; f(’hello’); 这样做显然是行不通的,程序提示f函数不存在。 后来想到了可以借用eval函数来实现,修改程序: 123456function say(w){ alert(w); } var f = ‘say’; eval(f)(’hello’); //或者:eval(f+’("hello")’); 这次程序按照预期的运行了, 其实这都是eval函数的功劳,到这里应该想起PHP中也有eval函数,他们的作用类似,都可以在自己的环境中把字符串当作代码运行出来,所以就有了上面的效果。 最后再放出网上找到的一个例子代码,但是这个例子和我要表达的不是一个意思,可得看仔细了。 123456function say(w){ alert(w); } (function a(b){ b(’hello’); })(say);
439 阅读 | 没有评论2011年7月17日 | 归档于 LAMP标签: JavaScript -
【转载】call,apply,arguments,callee,caller介绍
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596//1.call 作用于的对象this是第一个参数,后面的不定长参数是作为参数传递过去的。 <input type="text" id="t" value="input value"/> <script> function aaa(g) { alert(this.value); alert(g); } aaa.call(document.getElementById(’t') , ‘test string’); </script> //2.apply 作用于的对象this是第一个参数, 第二个参数是一个数组,表示传递的所有参数 <script> function sum() { var s = 0; for(var i = 0 ; i < arguments.length ; i++) { s += arguments[i]; } return s; } function aaa() [...]
341 阅读 | 没有评论2011年7月1日 | 归档于 LAMP标签: JavaScript -
JavaScript函数闭包的实例程序
最近在学习JavaScript,一直感觉这个语言很诡异,和其他的语言有些不同。最近暑假期间补充知识,正好来学习一下。今天提供一个关于JavaScript中函数闭包的一个实例程序。先来解释下什么是函数闭包: 函数闭包-即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。也就是说,内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它仍然必需访问其外部函数的局部变量、参数以及其他内部函数。 下面的两个实例程序的作用是给一组标签添加鼠标事件函数,当点击一个节点是,弹出一个对话框显示节点的序号。 实例一:未利用函数闭包错误的实例 var add_the_handlers=function (nodes){ var i; for(i=0;i<nodes.length;i++){ nodes[i].onclick=function(e){ alert(i); }; } } add_the_handlers(document.getElementsByTagName(“div”)); 实例二:利用函数闭包正确的实例 var add_the_handlers=function (nodes){ var i; for(i=0;i<nodes.length;i++){ nodes[i].onclick=function(i){ //alert(i); return function (e){ alert(i); }; }(i); } } add_the_handlers(document.getElementsByTagName(“div”)); PS:学习笔记只用,不做深入解释(功力不够,继续修炼)。
548 阅读 | 2 条评论2010年8月6日 | 归档于 WordPress标签: JavaScript -
javascript数组-DOM节点数组
最近发现JavaScript还是一门很有意思的语言,值得好好学习一下。前些天调试一个简单程序时,发现一个问题或者说自己犯了一个简单的错误。 下面我举一个简单的例子说明一下遇到的问题: 我有个HTML文档如下 tomheng 住在webfuns 趣味互联网 我想要删除里面的table节点元素,注意HTML文档中有两个以上的Table节点于是写了如下的代码。 tb=document.getElementsByTagName(“table”); for(var i=0;i=tb.length;i++){ document.body.removeChild(tb[i]); } 问题分析 有没有发现问题啊?上面的代码是没有错误的,但是就是不能实现我想要的效果,上面的代码不能删除最后一个元素。如果元素多了,你能想出他是怎样删除的吗? 我们都知道数组的复制在大多数语言中都是引用传值的,在JavaScript中也不例外,而且数组的存储结构一般都是采用栈的形式,所以上面的问题就很好解释了。tb变量实质上得到的是DOM中的Table节点数组的引用,我们在For循环中删除Table节点元素同样也会反应在tb这个数组中,这样以来,每删除一个元素数组的长度就会发生变化,根据栈结构的特点,元素自动向上弹出,所以我们使用这样的删除方式只能删除索引为奇数的元素。既然知道的了原因,那么解决起来就比较简单了。 正确代码如下: tb=document.getElementsByTagName(“table”); while(tb.length){ document.body.removeChild(tb[0]); } /*充分利用栈结构的特点,总是删除第一个元素,直到为空*/
396 阅读 | 没有评论2010年4月18日 | 归档于 WordPress标签: JavaScript

近期评论