我的displayError()函数根本不起作用

时间:2014-03-06 12:08:31

标签: javascript jquery ajax

我制作了一个应该显示错误或删除错误的函数。

不幸的是,当我以任何方式使用该功能时,例如像displayError(true, "test");一样,它无效。

当我查看我的HTML代码以查看是否有任何更改时,没有任何更改。

function displayError(display, string, xhr) {
    $("div#error").fadeOut(300, function() {
        if(arguments.length == 1 && typeof display === "boolean" && display == false) {
            //do nothing
        } else if(arguments.length == 2 && typeof display === "boolean" && display == true && typeof string == "string") {
            $("div#error").html('<b style="color: #ce1919;">(!)</b> '+string).fadeIn(300);
        } else if(arguments.length == 3 && typeof display === "boolean" && display == true && typeof string == "string" && typeof xhr === "object") {
            $("div#error").html('<b style="color: #ce1919;">('+xhr.status+")</b> "+string).fadeIn(300);
        }
    });
}

任何可以识别问题的人?

2 个答案:

答案 0 :(得分:3)

use 
typeof display === "boolean"
typeof xhr === "object"

希望这有帮助。

Reference

答案 1 :(得分:0)

我发现了控制台日志方法。所以我试着检查我的功能是否完全被解雇了。但后来我发现arguments数组只是空的,这意味着参数在回调中不可用。所以我将参数存储在变量中,然后在回调中的if语句中使用该变量。

像这样:

function displayError(display, string, xhr) {
    var args = arguments;
    $("div#error").fadeOut(300, function() {
        if(args.length == 1 && typeof display === "boolean" && display == false) {
            //do nothing 
        } else if(args.length == 2 && typeof display === "boolean" && display == true && typeof string == "string") {
            $("div#error").html('<b style="color: #ce1919;">(!)</b> '+string).fadeIn(300);
        } else if(args.length == 3 && typeof display === "boolean" && display == true && typeof string == "string" && typeof xhr === "object") {
            $("div#error").html('<b style="color: #ce1919;">('+xhr.status+")</b> "+string).fadeIn(300);
        }
    });
}