2013-09-23 74 views
2

我有一個調查Web應用程序,用於收集客戶的數據。我試圖將十幾個不同的功能(每個選項一個)轉換爲一個簡單的功能。 「選票」存儲爲localStorage變量,以便調查可以每天重新打開而不會丟失數據。以下是我有:將javascript中按鈕的值傳遞給創建localStorage變量的函數

<script> 

function vote(choice) 
{ 
    if (localStorage.choice) 
    { 
     localStorage.choice=Number(localStorage.choice)+1; 
    } 
    else 
    { 
     localStorage.choice=1; 
    } 
    alert("Thanks for your input! Have a nice day"); 
} 

</script> 

然後,我在體內的按鈕,看起來像這樣:

<li class="li" onClick="vote(a);">choice 1</li> 
<li class="li" onClick="vote(b);">choice 2</li> 
<li class="li" onClick="vote(c);">choice 3</li> 

功能工作得很好,如果我對每個單獨的,我在做什麼錯將這些字母傳遞給新的localStorage變量?

回答

4

要使用對象的屬性,動態地,你必須使用[]符號

<script> 

function vote(choice) 
{ 
    if (localStorage[choice]) 
    { 
     localStorage[choice]=Number(localStorage[choice])+1; 
    } 
    else 
    { 
     localStorage[choice]=1; 
    } 
    alert("Thanks for your input! Have a nice day"); 
} 

</script> 

傳給你要引用他們

<li class="li" onClick="vote('a');">choice 1</li> 
<li class="li" onClick="vote('b');">choice 2</li> 
<li class="li" onClick="vote('c');">choice 3</li> 
的字母串

DEMO

+0

你忘記了數字參數中選擇的括號。 – L105

+1

@MikeW如果您知道代碼寫入時的運行情況,則只能使用點符號,但在op將屬性傳遞給函數時情況並非如此。 – Musa

+0

爲什麼-1這個答案?對我來說看起來很好。另外,'localStorage.choice'在這裏不起作用。圖片將函數參數重構爲'selected'。現在應該很明顯,爲什麼「選擇」不再適用於動態的「選擇」。 –

2

a,bc是變量。您應該使用字符串文字:

<li class="li" onClick="vote('a');">choice 1</li> 
<li class="li" onClick="vote('b');">choice 2</li> 
<li class="li" onClick="vote('c');">choice 3</li> 
+0

這只是答案的一部分,並且您假設在'a','b','c'不是全局變量。另外你所做的是使字符串包含''a「',''b'',''c」' – andlrc

相關問題