首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

请问js熟手们一个关于this 指向发生转变,导致对象内部属性取不到的有关问题

2012-03-29 
请教js熟手们一个关于this 指向发生转变,导致对象内部属性取不到的问题html:div iddemoDragonmousedow

请教js熟手们一个关于this 指向发生转变,导致对象内部属性取不到的问题
html:
<div id="demoDrag" onmousedown="a.start(event,this)"></div>

js:
<script type="text/javascript">
function tuodong(){
  this.start=function(e, el){
this.X=e.clientX
this.Y=e.clientY
document.mousemove=this.draging  
  }
  this.draging=function(e){
  alert(this.X)  
  }
}
a=new tuodong()
</script>
我发现在调用this.draging方法时,this.X此时已经取不到值了,分析了一下原来是document.mousemove原因,this这是指的是document,而不是当前对象了,请问这种情况我该怎么取得this.X的值,难道要把X设置成全局变量吗?


[解决办法]
this.draging=function(e){
var a=new start();
alert(a.X)
}
试试这样
[解决办法]
<script type="text/javascript">
function tuodong(){
this.start=function(e, el){
this.X=e.clientX
this.Y=e.clientY
var thisX = this.X;
document.mousemove=this.draging
}
this.draging=function(e){
alert(thisX)
}
}
a=new tuodong()
</script>
[解决办法]
this.draging=function(e){
alert(this.X)//this指向的是document
}

试试

JScript code
<script type="text/javascript">function tuodong(){  var self = this;  this.start=function(e, el){this.X=e.clientXthis.Y=e.clientYvar thisX = this.X;document.mousemove=this.draging     }  this.draging=function(e){  alert(self.X);     }}a=new tuodong()</script>
[解决办法]
js里的this总是指向当前对象。

热点排行