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>

但是当我更改值时,我得到“未捕获的类型错误:无法读取未定义的属性‘黄金’”但window.PRICES不是未定义!怎么了?

PS:我可以pick('Gold','10')使用 GC 控制台调用!!!

4

1 回答 1

7

onchange切换处理程序的参数顺序。应该是pick(this.name, this.value),因为您首先访问PRICES对象,然后才访问对象,就像在您的示例中一样。namevaluepick('Gold', '10')

于 2012-12-02T19:28:58.737 回答