1遍歷數組
通常寫法:(
更改為“推薦寫法”,隨筆修改于2007年11月26日)
var myArray=new Array();
myArray.push(1);
myArray.push("1");
for(var i=0;i<myArray.length;i++)
alert(myArray[i]);
推薦寫法:(
更改為“非推薦寫法”,隨筆修改于2007年11月26日)
var myArray=new Array();
myArray.push(1);
myArray.push("1");
for(var i in myArray)
alert(myArray[i]);
原因:代碼量少(
原因見ke的評論,隨筆修改于2007年11月26日)
2定義構造函數
通常寫法:
function Person(name,sex)
{
var action='run';
this.name=name;
this.sex=sex;
this.run=function(){
alert(action);
};
}
推薦寫法:
function Person(name,sex)
{
this.name=name;
this.sex=sex;
this.action='run';
}
Person.prototype.run=function(){
alert(this.action);
};
原因:避免重復創建函數,避免使用閉包
3判斷一個js對象是否支持某個屬性或方法
錯誤寫法:
var person=new Person('lzq','男');
if(person.name)
{
alert('name屬性存在');
}
正確寫法:
var person=new Person('lzq','男');
if(typeof(person.name)!='undefined')
{
alert('name屬性存在');
}
原因:當person.name=null,0,false時測試失效
4在IE中根據name屬性取得SPAN元素
錯誤寫法:
var domObjs=document.getElementsByName('nameStr');
正確寫法:
function getElementsByNAME(name)
{
returns = new Array();
var e = document.getElementsByTagName('span');
for(i = 0; i < e.length; i++) {
if(e[i].getAttribute("name") == name) {
returns[returns.length] = e[i];
}
}
return returns;
}
var domObjs=getElementByNAME('nameStr');
原因:w3c規范中getElementsByName是按著name屬性進行檢索的,而MS的IE卻是按著id來檢索,導致不能得到應該得到的Elements。
5得到字符串所占的字符個數
錯誤寫法:
var str="Java我選擇,我喜歡!";
var charLength=str.length;
正確寫法:
function getLen(str)


{
var totallength=0;
for (var i=0;i<str.length;i++)

{
var intCode=str.charCodeAt(i);
if (intCode>=0&&intCode<=128)

{
totallength=totallength+1; //非中文單個字符長度加 1
}
else

{
totallength=totallength+2; //中文字符長度則加 2
}
}
return totallength;
}
var str="Java我選擇,我喜歡!";
var charLength=getLen(str);
原因:一個漢字占兩個字符