补充,我用:
document.body.attachEvent( "onclick", this.hide );
来为body增加onclick事件程序的。现在发现在hide()里面,this也不是body,也不是类本身,不知道是什么东西。
document.body.attachEvent( "onclick", this.hide );
来为body增加onclick事件程序的。现在发现在hide()里面,this也不是body,也不是类本身,不知道是什么东西。
解决方案 »
- Fusioncharts ASP.NET服务端导出图片
- jsp页面引用<c:forEach>
- 当我点击事件时 让table的背景图片变化?
- 类似google广告的那种javscript 接口 是怎么实现的?
- javascript代码求助
- 一个可输入的div是否可移动其光标?
- IE7有没有解决或开始解决IE的内存泄露问题?有知道的朋友来谈谈
- 怎么使用java script实现类似SQL Builder的查询条件编辑功能
- 江湖告急!!ASP文件如何调用前台网页中表单的值!!
- js中,alert对话框可不可以把叹号去掉,或者变成其他友善一点的符号,急,马上要交货了
- window.onerror=errHandle;能不能知道错误发生在哪个函数中呢?
- 有一行字符串‘true&false’,如何让它执行起来,变成一个boolean型结果
比如说
<div id="lihan" onclick="alert(this.id)">
body.prototype = {
....
handler:{
onclick:[],
},
attachEvent:function(type,fn){
this.handler[type].push(fn);
},
click:function(){
//执行一些body被click的过程
for(var i=0;i<this.handler["onclick"].length;i++){
this.handler("onclick")(); //调用事件的委托函数,作用域是当前的注册对象
}
}}大概是这么个过程,如果还不明白加我qq 113411553
{
var oDiv = document.getElementById( this.id );
oDiv.style.display = "none";
};
this.id中的this不是指代你当前的对象是很正常的事!
js中的作用域是通过函数来划分的,这里this的作用域与外面的this的作用域不同了,指代的东西自然不一样!
var __method = this, args = Array.prototype.slice.call(arguments); args.shift();
return function() {
return __method.apply(object, args.concat(Array.prototype.slice.call(arguments)));
}
}然后
document.body.attachEvent( "onclick", this.hide.bind(this) );
this.hide=function(){
var oDiv = document.getElementById( this.id );
oDiv.style.display = "none";
};
的作用设位对象绑定一个方法也就是帮函数的指针赋值给对象供函数在合适的时机
调用,在你做这些操作的时候this确实指当前对象。但这时候你的函数没有运行,
而当你通过事件触发或其他方法使函数运行时,这时候js解释机已经把this指针
的值给了另一个对象的地址。所以这就是产生你所说的现象的原因。如果你想在方法中访问对象,比较简单的方法是使用一个必包把对象缓存起来
var _obj=this;
this.hide=function(){
var oDiv = document.getElementById( _obj.id );
oDiv.style.display = "none";
};
1.在function中出现的是指整个document,如:你在body中有个id为ff的元素,在functin中传参,就可以直接this.ff.value=....
2.实例化一个类对象时,指代这个对象。
nana