Archive for November, 2008
《精通javascript》中的几个错误
第86页,代码清单5-28中有这样一段:
//向后遍历数组,
//因为我们向前添加元素
for ( var i = elems.length - 1; i >= 0; i-- ) {
parent.insertBefore( elems[i], before );
}
此处用一个反循环反而把被添加元素的顺序搞反了,用一个正循环才能得到正确的顺序。
另一个错误:在103页,表单事件那部分有这样一句:“select事件在<select>元素更新后触发”。事实上,<select>元素更新后只会触发onchange事件,不会触发onselect事件,参见这里:“Broadly speaking, buttons can generate click events, and text and select items can generate focus, blur, select, and change events. The one potentially confusing aspect of this organization of events is that selection lists cannot generate the select event. This is because they have no editable text. ”
用editplus查看或修改文件编码的方法
editplus里面自带有更改文件编码的功能:依次点击菜单Document-File Encoding-Change File Encoding这里可以查看和修改文件编码。
还有一个办法是打开文件之后点击菜单File-Save as,在弹出的对话框的最下面就是当前文件的编码,更改编码之后保存并覆盖原文件就相当于修改了此文件的编码。
神奇的exec()方法
今天发现《JavaScript高级程序设计》中对正则表达式的exec()方法的讲解完全就是错误的,书中说exec()方法以一个字符串作为参数并且返回一个数组包含所有的匹配项,并且说执行下面这段代码之后,arrMatches就是’at’,'at’,'At’,'aT’,'aT’,'at’这几个字符串组成的一个数组:
var sToMatch = “a bat, a Cat, a fAt baT, a faT cat”; var reAt = /at/gi; var arrMatches = reAt.exec(sToMatch);
可事实上测试这段代码之后结果并非如此,arrMatches只返回的数组中只包含了一项’at’,也就是第一个匹配项。
mozilla上的一篇文章对exec()方法做了比较详细的说明,exec()方法并不像书中所说的跟字符串的match()方法相似,match()方法一次性返回包含了所有匹配项的一个数组,而exec()方法执行一次只返回包含一个匹配项和这次匹配中的所有反向引用的数组,看看下面的例子就比较容易明白:
var myRe = /d(b+)(d)/ig;
var myArray = myRe.exec("cdbBdbsbzDBBBBD");
执行这段代码之后,myArray就变成了这样一个数组:["dbBd", "bB", "d"],很显然数组中的第一项是第一个匹配项,而另外两项则是这次匹配中的反向引用。如果再次执行这句:myArray = myRe.exec("cdbBdbsbzDBBBBD");,那么myArray就变成了这个数组:["DBBBBD","BBBB","D"],也就是第二个匹配项和其中的反向引用组成的数组。每执行一次exec()方法就会从上一次匹配项的末尾开始寻找下一个匹配项,直到找完所有的匹配,如果还继续执行exec()就会返回null。
解决nod32启动慢的问题
Nod32启动慢这个问题困扰很久了,每次开机nod32的启动画面要在屏幕中间停留40秒的样子,然后才开始ADSL拨号,去掉启动时检查文件也无效,今天终于在这里找到了解决办法:
这是开机DHCP寻找网关和DNS的问题。通俗点说吧。我们机器和Modem直接的连接是形成了一个虚拟的局域网络。这时候DHCP就会去寻找他。默认情况下系统会自动通过DHCP来获得IP地址。寻找到网关和DNS总需要那么一块时间。所以就会造成开机慢。
你可以这么做。点开始-设置-网络连接-本地连接 然后在本地连接上点属性-Internet 协议(TCP/IP)-属性
点使用下面IP地址:
IP地址那一栏目填:192.168.1.2
子网掩码点一下就自动出来了。
默认网关填:192.168.1.1
那个手动设置DNS就不用填了。
这样就OK!点确定后重启下试试。就不会再出现这样的问题了。
设置完毕之后nod32的启动画面大约在6秒之内就会消失。