不能将变量设置为外部函数

时间:2017-01-26 01:53:40

标签: javascript variables call

我似乎无法在我的ajax函数中设置this.chkOK。我有点无能为力这样做,所以我想也许可以调用validateFields.call(这)应该解决我的问题,但我发现事实并非如此。所以,我有点失去了为下一步做的事情。除非必须,否则我不想将其设置为全局变量。我试图设置this.chkOK = true

function validateFields() {

this.chkOK = null;

this.username = function() {
    if(FS.gID('username').value.length >= 2) {

        var user = FS.gID('username').value;


        //Make sure that the username doesn't already exist
        FS.ajax('/server/chkUser.php?user='+user,'GET',function(){
            validateFields.call(this);
            if(xmlText == 0) {

                    this.chkOK = true;
                alert("This user doesn't exist.");


            }
            else if(xmlText == 1) {
                alert("Theres already a user with this username");
                this.chkOK = false;

            }
        });

    }
    else {
        alert("empty");
        this.chkOK = false;
    }
alert(this.chkOK);

}
 }

2 个答案:

答案 0 :(得分:1)

示例中this的值不是它声明的函数,就像您在代码中所假设的那样。

如果您只是使用var chkOK = null;而不是this.chkOK = null;,它应该会开始起作用。

答案 1 :(得分:0)

这是因为FS.ajax中的内容与您打算使用的内容不同。 FS.ajax中的this表示FS

您可以将其分配给另一个变量并在FS.ajax中使用它。例如,

  

注意 :除非您知道将this.chkOk置于函数内部的原因(例如{{1}调用预期的validateFields } 要么   callapply是全局对象(您不想要)或   this在严格模式下会导致代码失败

undefined