存档的‘javascript教程’分类

json 格式与PHP json 格式

json 格式与PHP json 格式之间是怎样调用的。结构是怎样的呢?以前转过一篇关于json 格式的文章。今天再重新整理个json格式的例子,以及php json格式与js json之间的调用。这个函数,第一个alert(json[1].username); 会提示 “李四”。 json 变量是一个数组对象。所以要采用 obj.username 这样的格式来调用。

继续阅读 »

优化JavaScript脚本【转】

语言层次方面
 
循环
 
循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in)三 种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用。for(;;)和while循环的性能应该说基 本(平时使用时)等价。
 
而事实上,如何使用这两个循环,则有很大讲究。我在测试中有些很有意思的情况,见附录。最后得出的结论是:
 
如果是循环变量递增或递减,不要单独对循环变量赋值,应该在它最后一次读取的时候使用嵌套的++或—操作符。
 
如果要与数组的长度作比较,应该事先把数组的length属性放入一个局部变量中,减少查询次数。
 
局部变量和全局变量
 
局部变量的速度要比全局变量的访问速度更快,因为全局变量其实是全局对象的成员,而局部变量是放在函数的栈当中的。
 
不使用Eval
 
使用eval相当于在运行时再次调用解释引擎对内容进行运行,需要消耗大量时间。这时候使用JavaScript所支持的闭包可以实现函数模版(关于闭包的内容请参考函数式编程的有关内容)
 
减少对象查找
 
因为JavaScript的解释性,所以a.b.c.d.e,需要进行至少4次查询操作,先检查a再检查a中的b,再检查b中的c,如此往下。所以如果这样的表达式重复出现,只要可能,应该尽量少出现这样的表达式,可以利用局部变量,把它放入一个临时的地方进行查询。
 
这一点可以和循环结合起来,因为我们常常要根据字符串、数组的长度进行循环,而通常这个长度是不变的,比如每次查询a.length,就要额外进行一个操作,而预先把var len=a.length,则就少了一次查询。
 
字符串连接
 
如果是追加字符串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr。
 
如果要连接多个字符串,应该少使用+=,如
 
s+=a;s+=b;s+=c;
 
应该写成
 
s+=a + b + c;
 
而如果是收集字符串,比如多次对同一个字符串进行+=操作的话,最好使用一个缓存。怎么用呢?使用JavaScript数组来收集,最后使用join方法连接起来,如下
 
以下是引用片段: var buf [...]

继续阅读 »

tinyMCE插件开发 之 插入html,php,sql,js代码,并高亮显示

前几天,觉得blog的插入代码不够好用。于是,将sina的html编辑器更换为了tinyMCE。并且开发了一个简单的插入代码的功能。。。
下面就是我开发的过程。
首先,我的 tinyMCE版本是 Version: 3.2.7 (2009-09-22) 。下载地址 http://tinymce.moxiecode.com/download.php
tinyMCE插入代码,需要调用 tinyMCE的   tinyMCE.execCommand(‘mceInsertContent’,false,value);  方法。其中参数无需改变,value [...]

继续阅读 »

浏览器兼容手册

并不一定全,有的也可能不准确,比如新出的IE8、Chrome等都没有太多涉及,虽然最近做的一些项目也兼容了IE8、Chrome等,但都没来的及总结进去,后来就忘了…汗。大家一起慢慢完善吧。
javascript部分
1. document.form.item 问题
问题:
代码中存在 document.formName.item("itemName") 这样的语句,不能在FF下运行
解决方法:
改用 document.formName.elements["elementName"]
2. 集合类对象问题
问题:
代码中许多集合类对象取用时使用(),IE能接受,FF不能
解决方法:
改用 [] 作为下标运算,例:
document.getElementsByName("inputName")(1) 改为 [...]

继续阅读 »

javascript 日期 时间 函数 大全

var myDate = new Date();    myDate.getYear();       //获取当前年份(2位)    myDate.getFullYear();   //获取完整的年份(4位,1970-????)    myDate.getMonth();      //获取当前月份(0-11,0代表1月)    myDate.getDate();       //获取当前日(1-31)    myDate.getDay();        //获取当前星期X(0-6,0代表星期天)    myDate.getTime();       //获取当前时间(从1970.1.1开始的毫秒数)    myDate.getHours();      //获取当前小时数(0-23)    myDate.getMinutes();    //获取当前分钟数(0-59)    myDate.getSeconds();    //获取当前秒数(0-59)    myDate.getMilliseconds();   //获取当前毫秒数(0-999)    myDate.toLocaleDateString();    //获取当前日期    var [...]

继续阅读 »

Json格式和数据类型 介绍

Json格式和数据类型 介绍前几天,我才知道有一种简化的数据交换格式,叫做yaml。我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开。从结构上看,所有的数据最终都可以分成三种类型: 第一种类型是scalar(标量),也就是一个单独的 string(字符串)或数字(numbers),比如“北京”这个单独的词。

继续阅读 »

jQuery技巧完全总结 [转]

一、简介
1.1、概述随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype、YUI、jQuery、mootools、Bindows以及国内的JSVM框架等,通过将这些JS框架应用到我们的项目中能够使程序员从设计和书写繁杂的JS应用中解脱出来,将关注点转向功能需求而非实现细节上,从而提高项目的开发速度。jQuery是继prototype之后的又一个优秀的Javascript框架。它是由 John Resig 于 2006 年初创建的,它有助于简化 JavaScript™ 以及Ajax 编程。有人使用这样的一比喻来比较prototype和jQuery:prototype就像Java,而jQuery就像ruby. 它是一个简洁快速灵活的JavaScript框架,它能让你在你的网页上简单的操作文档、处理事件、实现特效并为Web页面添加Ajax交互。
它具有如下一些特点:1、代码简练、语义易懂、学习快速、文档丰富。2、jQuery是一个轻量级的脚本,其代码非常小巧,最新版的JavaScript包只有20K左右。3、jQuery支持CSS1-CSS3,以及基本的xPath。4、jQuery是跨浏览器的,它支持的浏览器包括IE [...]

继续阅读 »