2

私は、顧客からデータを収集するための調査 Web アプリを使用しています。ダースの異なる関数 (オプションごとに 1 つ) を 1 つの単純な関数に変換しようとしています。データを失うことなく調査を毎日再開できるように、「投票」は 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

To use properties of an object dynamically you have to use [] notation

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

To pass the letters as strings you have to quote them

<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

于 2013-09-23T23:27:45.123 に答える
2

a, b, and c are variables. You should use string literals:

<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 に答える