JS面向对象语法问题

改一下昵称 2011-11-19 01:59:40

var sign = new Object;

sign.signDiv = document.getElementById('signUp');
sign.signUpButton = document.getElementById('signUpButton');
// sign.signUpButton.onclick = sign.signUp;

sign.userName = document.getElementById('userName').value ;
// error:Cannot read property 'value' of null
sign.removeSignDiv = function(){
// remove the sign up div.
this.signDiv.parentNode.removeChild( this.signDiv );
}
sign.signUp = function()
{ // sign up to user.php
ajax.open( 'GET', 'user.php?name='+ userName , true);
ajax.onreadystatechange = function(){
if( ajax.status == 200 && ajax.readyState == 4 ){
this.removeSignDiv();
// setInterval("getMessage();" , 5000);
}
}
ajax.send();
}

我确定HTML元素id都没有错,chrome却报错. 而且尝试这么调用 sign.signUp(); 也会报错:没有这个方法
我的写法上有什么问题吗?
...全文
130 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
改一下昵称 2011-11-19
  • 打赏
  • 举报
回复
找到原因了,脚本放在body前面所以取不到对象。谢谢
liangws 2011-11-19
  • 打赏
  • 举报
回复
这里的this绑定的不是sign..
sign.signUp = function()
{ // sign up to user.php
ajax.open( 'GET', 'user.php?name='+ userName , true);
ajax.onreadystatechange = function(){
if( ajax.status == 200 && ajax.readyState == 4 ){
this.removeSignDiv();
// setInterval("getMessage();" , 5000);
}
}
ajax.send();
}

改成下面,看看

sign.signUp = function()
{ // sign up to user.php
var that = this;
ajax.open( 'GET', 'user.php?name='+ userName , true);
ajax.onreadystatechange = function(){
if( ajax.status == 200 && ajax.readyState == 4 ){
that.removeSignDiv();
// setInterval("getMessage();" , 5000);
}
}
ajax.send();
}

87,990

社区成员

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

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