【问题标题】:Javascript file messed up and I need help fixing itJavascript 文件搞砸了,我需要帮助修复它
【发布时间】:2020-04-13 23:06:39
【问题描述】:

我是编码新手。我正在做一些 HTML 工作,今天进入了 JavaScript。我自己尝试过解决这个问题,并尝试通过研究很多东西和观看视频来完成它,但我仍然无法做到。

所以我在这里要做的是一个简单的财务回报计算器,我的回报率为 33%,我试图让这个人输入他想要的投资金额并计算他会得到多少钱返回。简单的 Excel 数学是:

( 15000 / 33% ) = 45,454

我意识到我不能在 JavaScript 中使用百分比,所以我决定创建一个最终给我 33% (8.25/25) 的常量

HTML 代码:

<div class="col-xl-6 mt-md-30 mt-xs-30 mt-sm-30">
  <div class="card">
    <div class="card-body">
      <h4 class="header-title">Calculate Earnings</h4>
      <div class="exhcange-rate mt-5">
        <form action="#">
          <div class="input-form">
            <input type="text" placeholder="15,000" value="" id="amount" />
            <span>USD</span>
          </div>
          <div class="exchange-devider">In 2025:</div>
          <div class="input-form">
            <input
              type="text"
              placeholder="45,454"
              value=""
              class="showamount"
            />
            <span>USD</span>
          </div>
          <div class="exchange-btn">
            <button class="calculateNow" type="calculateNow">
              Calculate Now
            </button>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

javascript代码:

<script type="text/javascript">
  const percent = 8.25 / 25;
  var inputAmount = document.getElementById("amount").value;

  function calculate(event) {
    document.getElementById("showamount") = inputAmount / percent;
  }

  exchange - btn.addEventListener("click", calculate);
</script>

【问题讨论】:

  • 您需要在按钮单击时检索inputAmmount,而不是在页面加载时(页面加载时它将为空)。您还需要 HTML 上的 inputAmmount 按钮
  • 除此之外,您应该使用document.getElementById('showammount').value = .. 而不仅仅是document.getElementById('showammount') = ..
  • @CertainPerformance 如何在按钮单击时检索 inputAmmount?
  • 欢迎来到 SO!请不要放与编程和问题无关的内容。比如“谢谢”、“我是编程新手”。
  • 您可以像这样存储百分比值。使用 0.33 而不是 33% ( 15000 / 0.33 ) 也会给你价值 45,454

标签: javascript html arrays forms web


【解决方案1】:

这里有一个问题-

                    function calculate(event) {
                      document.getElementById('showamount') =
                      inputAmount / percent ;

                    }

你需要将inputAmount / percent赋值给元素的值,而不是元素本身,所以替换为

                    function calculate(event) {
                      document.getElementById('showamount').value =
                      inputAmount / percent ;

                    }

正如评论员所指出的,还有一个错误 - 您使用exchange-button 作为变量,但它从未定义(也不是有效的标识符),所以也替换该行

exchange-btn.addEventListener('click', calculate);

document.getElementsByClassName('calculateNow')[0].addEventListener('click', calculate);

另一个问题是您在 getElementById 的计算函数中拼错了“金额”。

此外,在您的 HTML 中,类为 showamount 的输入元素的 id 应为 showamount

另一个问题是当在计算函数内单击按钮时,您需要检索inputAmount 的值。下面的代码工作正常 -

<div class="col-xl-6 mt-md-30 mt-xs-30 mt-sm-30">
                        <div class="card">
                            <div class="card-body">
                                <h4 class="header-title">Calculate Earnings</h4>
                                <div class="exhcange-rate mt-5">
                                    <form action="#">
                                        <div class="input-form">
                                            <input type="number" placeholder="15,000" value="" id="amount">
                                            <span>USD</span>
                                        </div>
                                        <div class="exchange-devider">In 2025:</div>
                                        <div class="input-form">
                                            <input type="number" placeholder="45,454" value="" id="showamount">
                                            <span>USD</span>
                                        </div>
                                        <div class="exchange-btn">
                                            <button class="calculateNow" type="calculateNow">Calculate Now</button>
                                        </div>
                                    </form>
                                </div>
                            </div>
                        </div>
                    </div>


                    <script type="text/javascript">

                    const percent = (8.25/25);

                    function calculate(event) {
                      // I put inputAmount here and removed it from outside so it will retrieved when the button is clicked.
                      var inputAmount = document.getElementById('amount').value;
                      document.getElementById('showamount').value =
                      Math.round(inputAmount / percent) ;
                    }

                    document.getElementsByClassName('calculateNow')[0].addEventListener('click', calculate);

               </script>

希望这会有所帮助:)

顺便说一句,你的 javascript 看起来还不错。

【讨论】:

  • 您还应该使用exchange-btn,因为它从未被定义过,而且这不是一个有效的变量名。
  • @Titus 我该如何解决这个问题?,我尝试了 Sanil 的代码,但仍然没有成功
  • 我在这里试过了:js.do/code/385511。仍然没有运气的家伙:(
  • @JuanPabloGaviria 而不是exchange-btn.addEventListener...,您必须使用document.querySelector('.calculateNow').addEventListener...之类的东西。
  • 仍然没有运气 :(,另一个人删除了披萨评论,所以如果你觉得那条短信给我免费披萨 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多