存档
-
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:学习笔记只用,不做深入解释(功力不够,继续修炼)。
684 阅读 | 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]); } /*充分利用栈结构的特点,总是删除第一个元素,直到为空*/
538 阅读 | 没有评论2010年4月18日 | 归档于 WordPress标签: JavaScript -
WordPress外部调用插件(js方式)-Ecall插件更新至1.12.15
wordpress外部调用插件-Ecall插件主页 (1)主要更新:改变外部调用的方式 原先是在根目录下建立一个文件,外部调用这个文件来实现文章的外部调用。这种方式有很多的弊端,首先是有的虚拟机主机可能目录权限不够,导致程序不能把api.php文件拷贝至根目录,只能手动来拷贝文件。另外还可能产生安全性和效率上的问题。 现在采用的hook方式,截获url,分析如果是外部调用的url则进行处理,否则放行,由WordPress进行正常的处理。 现在的调用方式改为: <script type=’text/javascript’ src=’http://domain/index.php?key=15e3f539603bee92e0d5c6f2718a02e3&cid=0&rows=6&len=4′></script> 或者 <script type=’text/javascript’ src=’http://domain/?key=15e3f539603bee92e0d5c6f2718a02e3&cid=0&rows=6&len=4′></script> (2)调用代码支持使用len参数来控制标题的字符数目 Len是个可选的参数可以不添加,默认值为120个字节。截取字符支持单字节和双字节混合截取。 可以再调用的代码后面加len=?来控制标题字符的显示数目 <script type=’text/javascript’ src=’http://domain/index.php?key=15e3f539603bee92e0d5c6f2718a02e3&cid=0&rows=6&len=4′></script>
1,075 阅读 | 8 条评论2009年12月14日 | 归档于 My project标签: JavaScript, 插件 -
HTML5新特性学习-自定义数据
此文章属翻译作品,如果看的不通顺或者看不懂,请翻看原文! 原文链接:HTML 5 data- Attributes 自定义数据属性是在HTML5中新加入的一个特性。对于规范来说,好像有点怪异–但他的确提供了一些便利。 简单来说,自定义数据属性规范规定任何以data-开头的属性都将被视为私有数据的存储区域(”私有”在这里的意思是最终用户无法看到他-他不会影响页面的布局和表现) 这允许你书写有效的HTML标记的同时,嵌入数据到你的网页中去。简单示例如下: <li class=”user” data-name=”John Resig” data-city=”Boston” data-lang=”js” data-food=”Bacon“> <b>John says:</b> <span>Hello, how are you?</span> </li> 上面的代码完全符合HTML5的规范。对所有的javascript开发者来说这是一个很受欢迎的新特性。一直以来我们都在需求一种最好的用有效地方式添加元数据到htmL元素的方法,框架用各种不同的方式去解决这一问题。一下是两种解决方案: 1)使用HTML,但自定义DTD。 2)使用XHTML,与特定的命名空间。 The addition of this prefix completely routes around both issues (including any extra markup for validation or needing to be valid XHTML) with this effective addition. On top of this a simple JavaScript [...]
798 阅读 | 没有评论2009年12月10日 | 归档于 web-trend -
js方式外部调用wordpress文章插件Ecall更新1.12.7版本
js方式外部调用wordpress文章插件Ecall已更新到1.12.7版本 下载 wordpress Ecall 插件主页 更新日志 (1)调整了cid为0时的bug。修改后cid=0和隐藏分类组合可以使wordpress站外调用更灵活 目前cid有以下几种用法。 A)cid=某个分类的id 示例: <script type=’text/javascript’ src=’http://blog.webfuns.net/api.php?key=b32154b43d6332afcb130b3a633c6ce4&cid=7&rows=6′></script> 这样可以实现站外调用某个具体分类下的文章 B)cid=0 不隐藏任何分类 <script type=’text/javascript’ src=’http://blog.webfuns.net/api.php?key=b32154b43d6332afcb130b3a633c6ce4&cid=0&rows=6′></script> 这样可以站外调用所有的分类下的文章 C)cid=0 隐藏某些分类 以趣味互联网为例: Google(cid=1) WordPress(cid=2) LAMP(cid=3) My Project(cid=4) 如果把Google隐藏了, <script type=’text/javascript’ src=’http://blog.webfuns.net/api.php?key=b32154b43d6332afcb130b3a633c6ce4&cid=0&rows=6′></script> 这样站外调用将显示Wordpress、LAMP、My Project三个分类下的文章 如果再把Wordpress隐藏了,就显示LAMP、My Project两个分类下的文章,以此类推,如果全部隐藏了,就不会显示任何调用。 2) 增加了错误提示 3) 修复了Cache time 无法设置为空的问题 4)修复了隐藏目录不能全部同时取消的问题 5)模板中不再支持content调用 原因是大文本调用容易出现不可预测的字符,从而导致js调用出错,此外大文本的外部调用浪费系统资源且价值不是很大。
1,799 阅读 | 5 条评论2009年12月7日 | 归档于 My project -
js方式外部调用wordpress文章插件Ecall更新1.11.27版本
js方式外部调用wordpress文章插件Ecall刚刚发布没几天,还有许多不完善的地方,今天更新了一下,版本为1.11.27。 主要更新 (1)插件安装后即可得到授权key。 (2)js调用中cid=0的时候调用所有分类的文章。 (3)输出的数据都支持其他wordpress插件的过滤 (4)显示时间格式变为:2009-11-27 (5)优化了右侧说明内容和调用示例的显示方式 补充: 关于wordpress js外部调用插件Ecall版本号的说明:a.b.c其中a代表插件发布第几年,b代表月份,c代表日期,比如1.11.27代表插件发布第一年11.27的更新版本。
771 阅读 | 没有评论2009年11月27日 | 归档于 My project标签: JavaScript, 插件

近期评论