var a = parseInt("09"), b = Number("09");
很多人会认为a和b的值都是数字9,但实际上不是。
parseInt的主要作用是把字符串转换为整数,或者把小数转换为整数。一般情况下,我们只用到它的第一个参数。但实际上,它有两个参数:
parseInt(string, radix)
parseInt会根据radix指定的进制进行转换,比如:
alert(parseInt("10", 2)); // outputs '2'
在没有指定radix或者radix为0的情况下,parseInt会按十进制进行转换。然而,这在某些情况下有点特殊:
- 如果string的值以“0x”开头,parseInt会按十六进制进行转换;
- 如果string的值以“0”开头,parseInt会按八进制进行转换。
说回开头的代码,由于"09"是以“0”开头,所以parseInt会按八进制进行转换,但是“9”不是合法的八进制值(八进制只有0-7八个数字),所以转换结果是0。
要避免这个陷进,可以强制指定radix:
alert(parseInt("09", 10)); // outputs '9'
在事件监听处理方面,IE提供了attachEvent和detachEvent两个接口,而Firefox提供的是addEventListener和removeEventListener。最简单的兼容性处理就是封装这两套接口:
function addEvent(elem, eventName, handler) {
if (elem.attachEvent) {
elem.attachEvent("on" + eventName, handler);
} else if (elem.addEventListener) {
elem.addEventListener(eventName, handler, false);
}
}
function removeEvent(elem, eventName, handler)
{
if (elem.detachEvent) {
elem.detachEvent("on" + eventName, handler);
} else if (elem.removeEventListener) {
elem.removeEventListener(eventName, handler, false);
}
}
然而,上面两个函数还没把问题完全解决。Firefox下,事件处理函数中的this指向被监听元素本身,而在IE下则不然。要解决这个问题,我首先想
SmartASP是一个ASP类库,其语法与jQuery类似,可以说是服务器端的jQuery。
主要功能和特性
- 使用Request对象获取参数值的操作封装为$函数;
- 内置类型扩展,其中String类型的扩展可以方便地进行类型转换;
- JSON序列化和反序列化;
- 缓存处理(Application对象的封装);
- MD5、SHA1数据加密;
- ADODB.Stream文件上传;
- DbHelper数据库操作辅助类。
下载
点击进入
0.2版更新 (2009-11-29)
- 去掉了$.convert对象的几个方法;
- 添加$.cookie和$.session;
- 验证模块独立出一个文件;
- 调整了$.data.DbHelper的接口。
0.1版发布 (2009-11-24)
为了把自己从表单验证中解放出来,特地写了这个插件。下面以一个简单的用户注册表单为例说明用法。
<form id="regForm">
<input type="text" name="userName" />
<input type="password" name="password" />
<input type="password" id="password2" />
<input type="submit" value="提交" />
</form>
这个表单包含三个输入框,分别是用户名(userName)、密码(password),以及为了防止密码输入出错而设置的第二个密码框(password2)。验证规则如下:
- 用户名不能为空;
- 密码不能少于6个字符;
- 两次密码输入必须一致。
要使用表单验证插件,首先要建立一个验证器对象,其参数是表单元素:
var validator = new $.validate.FormValidator($("#regForm"));
随后添加用户名的验证规则:
validator.addRules("userName", ["noempty", "", "用户名不能为空"]);
addRules方法最少要有两个参数:第1个参数是控件名,第2-N个参数是验证规则。验证规则是一个数组:第0个元素是验证指令,除了上面的"noempty",还有
最近打算换主IDE,主要原因是现在用的Dreamweaver太慢太占资源,特别是打开大文件的时候。而代替者就是EditPlus。下面简单记录一下如何把EditPlus配置成一个编程IDE。
首选项
无论是什么软件,一般都要先改全局设置,也就是首选项。
常规

- 还原最近文件的光标/标记/编码方式:这个一定要勾上,否则就不能保存代码折叠。
- 使用XHTML标签:标准化网页。
- 自动关闭HTML标签:勾上这个以后,输入“<”后就会自动补全“>”,光标在两个字符之间。
最近PHP又出了新版本5.3.1,趁着有空也更新到自己的机器上。
版本选择
PHP 5.3 For Windows有4个版本:
- VC9 x86 Non Thread Safe
- VC9 x86 Thread Safe
- VC6 x86 Non Thread Safe
- VC6 x86 Thread Safe
官网已经注明,VC9的版本是给IIS用的,VC6的版本是给Apache用的。之所以要这样区分,是因为VC9版本是用Visual Studio 2008编译的,编译器对程序进行了更多的优化,因而性能较好。至于Thead Safe(线程安全)/Non Thead Safe(非线程安全),官网并没有说明各自用途何在。Google了一番以后,我找到了答案:FastCGI是单线程执行的,因而不需要线程安全版本,去掉线程安全的防护后可以提高执行效率;而ISAPI方式则是多线程模式,所以需要采用线程安全版本。
之前尝试过安装5.3版本,可是一直运行出错,无奈之下只好退回5.2版。这回在官网发现了一句提示,说VC9版本需要先安装VC2008运行库(32位/64位)。上次应该就是漏了装这个东西。
配置php.ini
无论是在Linux还是Windows下安装,这都是不可忽略的一步。以下配置是必须的:
date.timezone = "Asia/Shanghai"
fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
cgi.force_redirect = 0
extension_dir =