parseInt()的未定义值

时间:2016-11-20 15:05:24

标签: javascript html

我正在学习Javascript事件,但我对输入中输入的值有疑问。

当我输入数字时,需要更改计算(keyup)。关于我选择(更改)的选项也是如此。

但是我用段落(id = res)返回的值是不确定的。我不明白它的含义以及如何调试它。



// Here is the Javascript for my events (keyup and change).

document.getElementById("selectDevice").addEventListener('change', change);
document.getElementById("montant").addEventListener('keyup', change);

function change(e) {
  var montant = Number.parseInt(document.getElementById("montant").value, 10);
  var selectDevice = document.getElementById("selectDevice").value;
  switch (e.target.id) {
  case 'nothing':
    var resultat = montant;
    console.log(resultat);
    break;
  case 'usd':
    var resultat = montant * 1.14;
    console.log(resultat);
    break;
  case 'eur':
    var resultat = montant * 0.82;
    console.log(resultat);
    break;
  }
  document.getElementById("res").innerHTML = resultat
}

<!-- Here is the HTML -->

Amount: <input id="montant" type="text" />
Device: 
<select id="selectDevice">
  <option id="nothing" value="nothing">Please choose a device</option>
  <option id="usd" value="eur">EUR</option>
  <option id="eur" value="usd">USD</option>
</select>
Convert amount: <span id="res"></span>
&#13;
&#13;
&#13;

我说法语,我没有翻译我的所有代码,但如果你有一些问题,我就在这里=)

如果你有Javascript文档中的一些解决方案,感谢你给我这个页面,因为我需要学习在doc中搜索以便自己找到我的解决方案。

度过愉快的一天=)

1 个答案:

答案 0 :(得分:3)

你的switch语句正在查看触发它的元素的ID,它有两个问题:

  1. 当触发更改的元素不同时,切换结果会有所不同 - 您希望切换仅与选择框相关。
  2. ID实际上并不重要 - 它是您要检查的值,并且您已将其作为selectDevice提供。
  3. 这只需要很小的修复:

    &#13;
    &#13;
    // Here is the Javascript for my events (keyup and change).
    
    document.getElementById("selectDevice").addEventListener('change', change);
    document.getElementById("montant").addEventListener('keyup', change);
    
    function change(e) {
      var montant = Number.parseInt(document.getElementById("montant").value, 10);
      var selectDevice = document.getElementById("selectDevice").value;
    
      switch (selectDevice) { // changed this and that was it.
      case 'nothing':
        var resultat = montant;
        console.log(resultat);
        break;
      case 'usd':
        var resultat = montant * 1.14;
        console.log(resultat);
        break;
      case 'eur':
        var resultat = montant * 0.82;
        console.log(resultat);
        break;
      }
      document.getElementById("res").innerHTML = resultat
    }
    &#13;
    <!-- Here is the HTML -->
    
    Amount: <input id="montant" type="text" />
    Device: 
    <select id="selectDevice">
      <option id="nothing" value="nothing">Please choose a device</option>
      <option id="usd" value="eur">EUR</option>
      <option id="eur" value="usd">USD</option>
    </select>
    Convert amount: <span id="res"></span>
    &#13;
    &#13;
    &#13;