2014-03-06 32 views
0

我做了一個應該顯示錯誤或刪除錯誤的函數。我的displayError()函數根本不工作

不幸的是,當我以任何方式使用該功能時,例如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); 
     } 
    }); 
} 

任何能夠識別問題的人?

+0

如果您檢查$( 「#DIV錯誤」)是發現什麼了嗎?或者它是一個空陣列。這可能是你的dom沒有加載或你的選擇器是錯誤的。 –

+0

如果我把'$(「div#error」)。fadeIn();'放在它工作的函數之外。所以我認爲我的選擇是正確的。 –

回答

0

我發現了控制檯日誌方法。所以我試圖檢查我的功能是否被解僱了。但後來我發現參數數組只是空的,這意味着參數在回調中不可用。所以我將參數存儲在一個變量中,然後在回調中的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); 
     } 
    }); 
} 
3
use 
typeof display === "boolean" 
typeof xhr === "object" 

希望這會有所幫助。

Reference

+0

謝謝。它幫助我解決了我的代碼的一些問題。 –

+0

這不是我的問題的解決方案,因爲該功能仍然無法正常工作。 –