1.javascript类的定义
function Person(name,age,sex){
var self=this;
this.name=name;
this.age=age;
this.sex=sex;
toString=function(){
alert(self.name);
}
this.getName=function(){
return this.name;
}
}
使用:
var person=new Person("yhp",28,1);
person.getName();//可以访问getName函数
person.toString();//不可以访问toString函数
利用prototype.js也可以这么定义
var Person=Class.create();
必须定义Person的构造函数:
Person.prototype.initialize=function(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
}
2.在上面的Person类中,toString函数是不能直接访问this.name的.
解决方法:可以定义变量self,把this赋值给它,在toString中利用self来访问this.name.
var self=this;
toString(){
alert(self.name);
}
应用:定义一个类,有个成员变量number,在构造函数中传入一个容器,在容器中创建一个div,div中绑定onclick,在onclick中访问number
var Module=function(container){
var self=this;
this.container=container;
this.build=function(){
this.number=Math.random();
var div=document.createElement("div");
div.innerHTML="module";
div.style.cursor="pointer";
div.onclick=function(){
alert(self.number);//在此处是不能访问this.number的.
}
this.container.appendChild(div);
test();
}
}
3.对于下面代码:
while(count>=0){
var div=document.createElement("div");
div.className="number";
div.innerHTML=count+1;
div.style.cursor="pointer";
div.onclick=function(e){
alert(count);
}
}
当触发div的onclick的时候,每次alert显示都是-1;也就是最后count的值.但需要每次alert的都是innerHTML中值.
获取innerHTML的方法:
对于事件,获取触发该事件的对象:
IE : window.Event.srcElement
Firefox:e.target //e是函数传入的事件参数
获取触发事件的对象的InnerHTML:
getClickPageNumber=function(e){
return Try.these(
function() {return window.event.srcElement.innerHTML},
function() {return e.target.innerHTML}
) ;
}
修改onclick:
div.onclick=function(e){
alert(getClickPageNumber(e));
}
4.清除html的table中tbody中的内容.
<tbody id="tBody">
<tr>
<td>a</td>
<td>b</td>
</tr>
</tbody>
代码:
$("tBody").innerHTML="";
上面的代码在IE中是没有效果的.
修改:
while (tBody.rows.length > 0) {
tBody.deleteRow(0);
}