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);
原因:一个汉字占两个字符