为了账号安全,请及时绑定邮箱和手机立即绑定

如下代码中,为什么在ajax的构造函数中,this.XX值变成未定义了呢?

如下代码中,为什么在ajax的构造函数中,this.XX值变成未定义了呢?

幕布斯7119047 2022-03-04 07:07:44
<title>构造函数</title><script>$ = document.getElementById;function news() {this.divid = "";this.get = function(divid) {xmlHttp = this.GetXmlHttpObject();if (xmlHttp==null) {alert ("您的浏览器不支持AJAX!");return;}this.divid = divid;//this.get_Changed();var url = "news.php";xmlHttp.open("GET", url, true);xmlHttp.onreadystatechange=this.get_Changed;xmlHttp.send(null);},this.get_Changed = function() {if (xmlHttp.readyState==4) {str = xmlHttp.responseText;$(this.divid).innerHTML = str;alert(this.divid) //为什么this.divid 为undefine呢}}this.GetXmlHttpObject = function() {var xmlHttp=null;try { // Firefox, Opera 8.0+, SafarixmlHttp=new XMLHttpRequest();}catch (e) { // Internet Explorertry {xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch (e) {xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}}return xmlHttp;}}var News = new news();News.get("aa"); //在aa中加载news.php的内容</script></head><body><div id="aa"></div></body>已经解决了,确实是作用域的问题,谢谢抛砖引玉用_this就搞定了function news() {var _this = this;this.divid = "";this.get = function(divid) {……xmlHttp.open("GET", url, true);xmlHttp.onreadystatechange=this.get_Changed;xmlHttp.send(null);},this.get_Changed = function() {if (xmlHttp.readyState==4) {str = xmlHttp.responseText;$(_this.divid).innerHTML = str;alert(_this.divid);}}}
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

回调的时候作用域已经变了,this好像变成xmlHttp这个还是什么忘掉了,你调试一下就知道了。

查看完整回答
反对 回复 2022-03-07
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信