首页 > 解决方案 > JS 变革者

问题描述

我的任务是用 JavaScript 编写一个 change maker 脚本,即使在查看了类似的情况(初级 JS 练习:Change Maker)之后,我也无法让这个东西工作。甚至从字面上纠正了另一篇帖子中的建议,但仍然没有。它很快就要到期了,我对这件事失去了理智。帮助!

我已经更新到我当前的 JS 代码

HTML

<body>
    <main>
        <h1>Change Calculator</h1>
        <label>Enter amount of change due (0-99):</label>
        <input type="text" id="cents" />
        <input type="button" value="Calculate" name="calculate" id="calculate" /><br><br>

        <label>Quarters:</label>
        <input type="text" id="quarters" disabled><br>

        <label>Dimes:</label>
        <input type="text" id="dimes" disabled><br>

        <label>Nickels:</label>
        <input type="text" id="nickels" disabled><br>
        
        <label>Pennies:</label>
        <input type="text" id="pennies" disabled><br>
      </main>
</body>

JavScript

var $ = function(id) {
  return document.getElementById(id);
};
var makeChange = function(cents) {
    var quarters = parseInt(cents / 25); 
    var dimes = parseInt(((cents - (quarters * 25)) / 10)); 
    var nickels = parseInt(((cents - (quarters * 25)) - (dimes * 10)) / 5); 
    var pennies = parseInt(((cents - (quarters * 25)) - (dimes * 10))- (nickels * 5));
    return cents;
};
var processEntry = function() {
  var cents = parseInt($("cents").value);
  if (!isNaN(cents) || cents < 100 || cents > 0) {
    $("quarters").value = quarters;
    $("dimes").value = dimes;
    $("nickels").value = nickels;
    $("pennies").value = pennies;
  } else {
    alert("Please enter a number between 0-99")
};
window.onload = function() {
  $("calculate").onclick = processEntry;
  $("cents").focus();
}; };

标签: javascripthtml

解决方案


processEntry 函数使用未定义的变量。

这应该会更好:

var processEntry = function() {
  var cents = parseInt($("cents").value);
  var quarters = Math.floor(cents / 25); 
  var dimes = Math.floor(((cents - (quarters * 25)) / 10)); 
  var nickels = Math.floor(((cents - (quarters * 25)) - (dimes * 10)) / 5); 
  var pennies = Math.floor(((cents - (quarters * 25)) - (dimes * 10))- (nickels * 5));
  // Your OR statements need to be AND statements
  if (!isNaN(cents) && cents < 100 && cents > 0) {
    $("quarters").value = quarters;
    $("dimes").value = dimes;
    $("nickels").value = nickels;
    $("pennies").value = pennies;
  } else {
    alert("Please enter a number between 0-99")
};

我认为您期望的是 Math.floor 而不是 parseInt


推荐阅读