将javascript中的按钮值传递给创建localStorage变量的函数

时间:2013-09-23 23:22:43

标签: javascript html5 local-storage

我有一个调查网络应用程序,用于收集客户的数据。我正在尝试将十几个不同的函数(每个选项一个)转换为一个简单的函数。 “投票”存储为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变量我做错了什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

abc是变量。你应该使用字符串文字:

<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>