2013-07-18 51 views
-3

這個問題可能比我意識到的更復雜。不帶參數的javascript函數

當頁面加載時,它檢查cookie(usercookie)。如果存在,它會在外部.js文件中調用一個函數。這個函數位於一個jquery文件中,並執行三件事。它隱藏了東西,將變量(userloggedin)設置爲true,並向用戶顯示歡迎消息。但是,它的表演很奇怪。爲了讓這個功能起作用,我必須在它像一個對象之前用一個「新」來定義它。如果我不這樣做,它根本無法工作。但是如果我使用它,它會拒絕接受任何爭論。看一看。

請記住,這是坐落在一個$(文件)。就緒(函數(){}

userlogged = new function($name) 
{ 
    userloggedin = true; 
    $('.socialicons').hide(); 
    $('#signup').hide(); 
    $('#login').hide(); 
    document.getElementById('cookieelement').innerHTML = "Welcome back, " + $name + "!"; 
} 

這裏是我如何調用,在主文檔的功能。

<script type="text/javascript" id="cookiescript"> 
//checks for the usercookie and gets the value as well 
var query = true; 
if (query === true) 
{ 

cookievalue = 
"Seth"; 
userlogged(cookievalue); 
} 

</script> 

這段代碼的一些從php查詢返回到mysql,但我知道代碼工作正常。

所以我的問題是,如何在js文件中創建此通用函數,我可以隨時調用用戶lo gs以某種方式(例如。檢測到cookie,表單條目)?

回答

1

您需要更改方法簽名接受一個參數

userlogged = new function($name) 
{ 
    userloggedin = true; 
    $('.socialicons').hide(); 
    $('#signup').hide(); 
    $('#login').hide(); 
    document.getElementById('cookieelement').innerHTML = "Welcome back, " + $name + "!"; 
} 
3

你必須在申報環節就像 function functionname(parameter)

+1

參數在這種情況下是$命名 – blackhawk

+0

對不起聲明的參數,我是在我發佈問題之前玩弄代碼,它不會與聲明中的參數一起工作 – user2566536

+0

使聲明部分如下所示:'function userlogged($ value)'所以在函數體中('{... }')如果它傳遞的話,你可以使用'$ value'。使用示例:'userlogged(2);'在這種情況下'$ value'等於'2'。我想我不能更具體。祝你好運。 –