2014-04-28 274 views
0

我想分配值給javascript變量而不刷新頁面,但它不工作。 考慮例如:賦值給Javascript變量

<head> 
    <script type="text/javascript"> 
     var id=''; 
     var source=''; 

     function assignvalue(_id,_source){ 

      //open div load in dialog box 
       id = _id; 
       source = _source; 
     } 
    </script> 
</head> 
<body> 
    <div id='load'></div> 
    <script> 
     _login.push(['login', 'callback_uri', 'http://localhost/Login/index/?source='+source+'&id='+id']); 
    </script> 

    <a href='' onclick="assignvalue('1','fromwhere');"></a> 
</body> 

在頭全局定義一些變量和一個標籤,我打開與負載ID股利和具有新value.But新價值的全球varible的的onclick沒有分配給它下面的div javascript.Any建議。 謝謝。

回答

0

你聲明瞭兩個全局變量idsource,但是在你的函數定義中聲明瞭兩個同名的局部變量,所以你對全局變量所需的改變應用到本地變量。只需重命名函數定義中的變量即可。

例如:

var id, source; 

function assignvalue (_id, _source) { 
    id = _id; 
    source = _source; 
} 
+0

這就是上述相同的答案... – Brendan

+0

我已經更新了我的問題,並根據您的解決方案進行了工作,但仍然無法正常工作 – user3406754

+0

第一次當頁面正在加載,而不是在點擊標籤問題 – user3406754

0

您聲明idsource兩次:一次是在全球範圍內,而一旦作爲函數的參數。

要覆蓋函數中全局變量的值,需要爲參數使用不同的名稱。

嘗試

function assignvalue(_id, _source) { 
    id = _id; 
    source = _source; 
} 

要鏈接被點擊時執行_login功能,你可以簡單地把它在assignValue

function assignvalue(id, source) { 
    _login.push(['login', 'callback_uri', 'http://localhost/Login/index/?source='+source+'&id='+id']); 
} 

在這種情況下,它不會是一個壞主意將函數assignvalue重命名爲login

+0

我已經更新了我的問題並按照您的解決方案工作,但仍然無法正常工作。 – user3406754

+0

腳本內部加載頁面時第一次加載頁面時,而不是在點擊標籤後出現問題 – user3406754

+0

請參閱我的更新回答 –

0

因爲您傳遞值的方式不能爲

function assignvalue(id,source) 

導致id和源代碼在函數中會變成局部變量。

請更換變量分析中的其他名稱,這樣它的工作,即

function assignvalue(passID,passSource){ 
    id = passID; 
    source = passSource; 
    console.log(id+" "+source); 
} 

則全局變量的值會發生變化。

+0

基本上與上面相同的答案只有不同的變量名稱和控制檯日誌 – Brendan

+0

我已更新我的問題和工作,根據您的解決方案。它不工作 – user3406754

+0

體內加載腳本第一次當頁面正在加載,而不是在onclick這是問題的標籤 – user3406754

0

是的,無論你寫的是正確的。

但是,當你點擊一個HyperLink它會自動刷新頁面。 這裏你想在你點擊Hyper鏈接時禁用自動刷新。對於您可以修改你的代碼是這樣的:

<html> 
<head> 
    <script> 

     var id,source; 
     function assignValue(_id,_source){ 
     id = _id; 
     source = _source; 
     alert(_id+" and also "+_source); 
     } 
    </script> 
</head> 
<body> 
    <script> 
    alert(id+" I am in Body "+source); 
    </script> 
    <a href="javascript:assignValue('1','fromWhere');">Hello</a> 
</body> 

OR或者你可以試試這個

<html> 
<head> 
    <script> 

     var id,source; 
     function assignValue(_id,_source){ 
     id = _id; 
     source = _source; 
     alert(_id+" and also "+_source); 
     return false; 
     } 
    </script> 
</head> 
<body> 
    <script> 
    alert(id+" I am in Body "+source); 
    </script> 
    <a href="" onclick="return assignValue('1','fromWhere')">Hello</a> 
</body> 

額外的信息: 要覆蓋默認瀏覽器功能,只需要返回false即可。 不僅在這裏,你幾乎可以在很多情況下應用這個。 一個這樣的情況是禁用右鍵點擊(簡單)就是

oncontextmenu= return false; 

和另一個這樣的情況是禁用按鍵事件等。

所以,你幾乎可以在任何地方應用這個。