转自:http://www.nowamagic.net/javascript/js_SomeJavascriptSkills.php
特性检测而非浏览器检测
因为某某特性某浏览器不支持,我们经常的做法是在代码中直接先做浏览器判断如:
1 |
if (Broswer.isFirfox){ |
2 |
//do
something |
3 |
} |
其实这样做是不科学的,因为很可以其它浏览器上可以支持你要用的特性,所以,比较好的做法为是直接做特性判断。如:
1 |
if (window.localStorage){ |
2 |
//使用本地存储功能 |
3 |
} |
使用方括号来访问属性或方法
这一点到不是强制的,只不过如果使用方括号来访问可以享受一些动态特性带来的好处,而且命名方面有少了许多限制。如:
1 |
for ( var i=0;i<9;i++){ |
2 |
obj[ "method" +i](); |
3 |
} |
表单的那些事
这里主要提两个很有用的属性,可以让你操作表单方便不少。
- form有一个elements属性。作用呢就是可以得到一个表单下的所有表单元素,这样在批量处理表单元素时就很有用,如:表单元素的序列化,或者验证之类的很有帮助。
- 对于第一个表单元素也有一个类似属性为form.这样可以很轻松得到一个表单元素属于哪个表单。
a元素onclick的那些事
1 |
< a href = "cool.html" onclick = "doSomething()" >做点什么吧</ a > |
点击这样一个链接时会有两种情况发生,1、如果dosomthing返回true,那么浏览器就会发生跳转到cool.html,相返如果返回false的话,就会忽略href。因此借住这个特性,我们可以写这样的代码。
1 |
function doSomething(){ |
2 |
return confirm( "您确认要离开吗" ); |
3 |
} |
有没有发现比起下面这样的代码爽了很多。
1 |
function doSomething(){ |
2 |
var ret
= confirm( "确认要离开吗?" ); |
3 |
if (ret){ |
4 |
window.loaction.href
= "cool.html" ; |
5 |
} |
6 |
} |
类型转换时不一样的做法
怎样把字符串转换成数字呢?我知道parseInt("123",10),除此之外还有什么好办法没,看下面的。
1 |
var num1
= "123" ; |
2 |
num1
= num1*1; |
3 |
var num2
= "123" ; |
4 |
num2
= +num2; |
这两种方法是不是很不错。还是很简洁吧。祝学习愉快!
1 |
var a
= 1; |
2 |
a
= !!a; |
那转换为bool类型有没有什么好办法呢?有啊!