this的问题,急求解决

Dereky 2007-09-08 12:10:48
代码:
<head>
.......
<script type="text/javascript" src="/script/prototype.js"></script> //引入prototype类库
<script type="text/javascript" src="/script/register.js"></script>//引入自己定义类
</head>
<body onload="Register.init()">
....
<input type="text" value="" id="email" class="" />
<input type="text" value="" id="pass" class="" />
<input type="text" value="" id="add" class="" />

.....

register.js
var Register = function(){
function Showspen(){
alert(this.id);//这里有问题!!
Element.addClassName(this.id + '_span','red');
}
return {
init: function setEvent(){
var inputlist = $('email','pass','add'),i;
for (i=0; i<inputlist.length; i++) {
Event.observe(inputlist[i], 'focus', Showspen);

}
}
}
}();

问题出在Showspen中,alert(this.id)
Firefox种执行,可以顺利得到值,但是IE执行通不过
测试IE中的this值,似乎是windows对象了
请教应该怎么修改,让两个浏览器都可以得到this对象?
...全文
163 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiewenxu 2007-09-10
  • 打赏
  • 举报
回复
楼上的都在说什么啊
this指针和document.getElementById(this); ,event.srcElement都没关系

注意this指针的指向对象

var Register = function(){
this.Test = "Register";
var PrivateID = this.id;
function Showspen(){
this.Test = "Showspen";
alert(PrivateID);//这里有问题!!
alert('当前指针指向:'+ this.Test);
Element.addClassName(PrivateID + '_span','red');
}
return {
init: function setEvent(){
var inputlist = $('email','pass','add'),i;
for (i=0; i<inputlist.length; i++) {
Event.observe(inputlist[i], 'focus', Showspen);
}
}
}
}();

注意js中function()自身可以声明类,所以Showspen的this指针实际上只向了Showspen自己
所以可以定义一个私有变量替代
Dereky 2007-09-09
  • 打赏
  • 举报
回复
用这个event.srcElement 测试过的 ,好像返回的还是不对
cnfreer 2007-09-09
  • 打赏
  • 举报
回复
event.srcElement
Dereky 2007-09-09
  • 打赏
  • 举报
回复
document.getElementById(this);
???
joejoe1991 2007-09-09
  • 打赏
  • 举报
回复
学习
APOLLO_TS 2007-09-09
  • 打赏
  • 举报
回复
document.getElementById(this);

you can get inner changing!
Dereky 2007-09-09
  • 打赏
  • 举报
回复
make

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧