2

我在工作中有一个调查网络应用程序来收集客户的数据。我正在尝试将十几个不同的功能(每个选项一个)转换为一个简单的功能。“投票”存储为 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

2 回答 2

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>

演示

于 2013-09-23T23:27:45.123 回答
2

a, b, 和c是变量。您应该使用字符串文字:

<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>
于 2013-09-23T23:26:38.337 回答