Javascript 累积平均成绩计算器

Javascript 累积平均成绩计算器,javascript,calculator,Javascript,Calculator,我正在创建一个累积GPA计算器,但我无法让计算器输出任何值。我的代码或计算有什么错误吗 <div id="Cumulative GPA" class="tabcontent"> <p2>Cumulative GPA <b>before</b> this semester:</p2> <input type="number" id="oldcumulativegpa"> <br />

我正在创建一个累积GPA计算器,但我无法让计算器输出任何值。我的代码或计算有什么错误吗

<div id="Cumulative GPA" class="tabcontent">
    <p2>Cumulative GPA <b>before</b> this semester:</p2> 
    <input type="number" id="oldcumulativegpa">
    <br />
    <p2><b>Number of semesters</b> your Old Cumulative GPA was calculated with:</p2> 
    <input type="number" id="numberofsemesters">
    <br />
    <p2>Your GPA <b>this semester</b>:</p2>
    <input type="number" id="currentsemestergpa">

    <script>
        document.getElementById("oldcumulativegpa").onkeydown = function() {myJsFunction()};

        function myJsFunction() {
            var oldcumulativegpa = document.getElementById('oldcumulativegpa').value;
            var currentsemestergpa = document.getElementById('currentsemestergpa').value;
            var numberofsemesters = document.getElementById('numberofsemesters').value;
        newcumulativegpa = (oldcumulativegpa*numberofsemesters + currentsemestergpa)/(numberofsemesters + 1);
    }
    </script>

    <p2>Your <b>New Cumulative GPA:</p2>
        <p id="newcumulativegpa"></p>
</div>

本学期之前的累积GPA:

使用以下公式计算您的旧累积GPA的学期数:
你这学期的平均成绩: document.getElementById(“oldcumulativegpa”).onkeydown=function(){myJsFunction()}; 函数myJsFunction(){ var oldcumativegpa=document.getElementById('oldcumativegpa')。值; var currentsemestergpa=document.getElementById('currentsemestergpa')。值; var numberofsemests=document.getElementById('numberofsemests').value; 新累计EGPA=(旧累计EGPA*学期数+当前学期数)/(学期数+1); } 你的新累积平均成绩:


您有几个问题:

  • 运行
  • 您没有获得
    #newcumulativegpa
    元素,而是创建一个全局变量
    newcumulativegpa
    并分配给它
  • 没有
    标记这样的东西
  • 只有在按下
    #oldCumulativeEGPA
    元素中的一个键时,您才能运行您的函数
  • 属性是一个
    字符串
    。您需要将其转换为一个
    编号
  • 请看这个问题,关于我所说的“
    #newcumulativegpa
    元素在运行脚本时不存在”的意思

    我明确地指出这一点,因为下面的可运行脚本无法很好地演示它

    constoldcumerativegpaelement=document.getElementById(“oldcumerativegpa”);
    const currentSemesterGPAEElement=document.getElementById(“currentsemestergpa”);
    const numberofsemestelement=document.getElementById(“numberofsemests”);
    const newCumulativeGPAElement=document.getElementById('newcumulativegpa');
    函数updateGPA(){
    const oldCumGPA=parseFloat(oldcumativegpaelement.value,10);
    const numSemesters=parseFloat(numberofsemestelement.value,10);
    const CURRSEMETERGPA=parseFloat(currentSEMETERGPAEElement.value,10);
    /*
    *测试用例:
    *4,3,3应该显示3.75
    */
    常数newCumulativeGPA=(
    (oldCumGPA*nummesters)+currenmesterGPa
    )/(单位/秒+1);
    newCumulativeGPAElement.innerHTML=newCumulativeGPA;
    }
    [
    OldCumulativegPaeElement,
    CurrentSemestergpaeElement,
    半酯化数
    ].forEach(el=>el.addEventListener(“更改”,updateGPA));
    updateGPA()
    
    
    • 本学期之前的累积GPA:
    • 使用以下公式计算您的旧累积GPA的学期数:
    • 你这学期的平均成绩:
    你的新累积平均成绩:
    0
    MyJ函数似乎根据输入中提供的信息来计算个人的GPA。这是合乎逻辑的,因为你把你以前的平均成绩乘以你在学校的时间,再加上你当前学期/季度的平均成绩除以这个季度后你的总时间


    问题是,我认为,你实际上没有显示结果。您所要做的就是创建一个新的标记,其中包含您在函数中声明的变量ID

    您希望“myJsFunction”中的最后一条语句具体做什么?为什么?请注意,您的意思是
    ,而不是
    ?另外,我的css中定义了新的累积GPA labelp2,您缺少了一个结束符。
    。感谢您确认计算结果。由于某些原因,此项上的代码无法正确计算。例如,如果你在输入中输入4、3、3,新的累积GPA应该是3.75,但它显示3.9677…@Jon好吧,我使用了你的数学函数。如果你在纸上使用这个公式,数学是正确的。代码中一定缺少什么?@Jon忘记在输入值上使用
    parseFloat()
    。请参阅我的编辑。数学部分不起作用,因为您的“currentsemestergpa”没有得到@Jon的值。在那里插入一个5,然后插入一个0来测试我的理论。