如何转移"这个"在onreadystatechange中使用匿名函数

时间:2015-06-26 00:50:55

标签: javascript ajax

当我使用AJAX将数据发布到服务器时,我想在this函数中使用onreadystatechange
例如:

HTML

<div onclick=send.call(this)></div>

的JavaScript

function send () {
    this.style.background = "#ccc";
    var xml = new XMLHttpRequest();
    xml.open("post", "/post.php", true);
    xml.send("data");
    xml.onreadystatechange = function () {
        if (xml.readyState == 4 && xml.status == 200) {
            this.style.background = "#fff";
        }
    }.call(this);
}

我认为它有效,但当我使用call时,onreadystatechange函数只运行一次。当我使用代码如:

xml.onreadystatechange = function () {
    console.log(xml.state);
}

输出为:1 2 3 4,但是当我使用

xml.onreadystatechange = function () {
    console.log(xml.state);
}.call(this)

输出为:1为什么?

0 个答案:

没有答案