3

私は奇妙な問題で立ち往生しています!

私はこのコードを持っています:

<script>
  window.PRICES = {
    'Gold' : { 10: 299, 20: 400, 100: 1745, },
    'Coins': { 10: 300, 40: 355, 1000: 30000, },
  };
</script>
<script>
function pick(i,n) {
  document.getElementById("Item").innerHTML = i+" "+n;
  document.getElementById("Price").innerHTML = (window.PRICES)[i][n];
}
</script>

この関数pickは、select の onchange イベントによって呼び出されます。

<select name="Gold" onchange="pick(this.value,this.name)">
  <option value="10">10 Gold</option>
  <option value="20">20 Gold</option>
  <option value="100">100 Gold</option>
</select>

しかし、値を変更すると、「Uncaught TypeError: Cannot read property 'Gold' of undefined」が表示されますが、未定義でwindow.PRICESはありません! どうしたの?

PS: pick('Gold','10')GC コンソールを使用して呼び出すことができます!!!

4

1 に答える 1

7

onchangeハンドラの引数の順序が入れ替わります。あなたの例のように、最初に によってオブジェクトpick(this.name, this.value)にアクセスし、次にによってのみアクセスしているため、そうである必要があります。PRICESnamevaluepick('Gold', '10')

于 2012-12-02T19:28:58.737 に答える