javascript奇怪的错误

use*_*047 3 javascript javascript-events

我遇到了一个奇怪的问题!

我有这个代码:

<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>
Run Code Online (Sandbox Code Playgroud)

该函数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>
Run Code Online (Sandbox Code Playgroud)

但是,当我改变值时,我得到"Uncaught TypeError:无法读取属性'未定义的'黄金'"但window.PRICES不是没有明确的!怎么了?

PS:我可以pick('Gold','10')用GC控制台打电话!!!

Joã*_*lva 7

onchange处理程序的参数顺序已切换.它应该是pick(this.name, this.value),因为你正在访问的PRICES对象通过name,只有通过value,就像在你的榜样pick('Gold', '10').

  • @ user1663047:我建议你把`function pick(i,n)`改为`function pick(productType,amount)`,所以你不必记住/猜测哪个是哪个. (2认同)