Javascript IF ELSE 语句停止

标签 javascript if-statement

我们这里有我的 GPA 计算器代码。我的一切都符合要求,但我似乎无法弄清楚为什么我的 IF ELSE 语句突然停止并将所有字母等级转换为值“4”。

我试过将语句放在处理成绩的 for 循环之外,并将它们推送到 gVals[] 我试过将它们完全放在函数之外,放在它们自己的函数中。我已经尝试了很多不同的东西,除了明显有效的东西。

我知道有一些简单的方法可以做到这一点,但我正在尝试以极简主义的心态来运行这个应用。

代码:

    function calcGPA() {
    //Variable Sections
    var grades = document.querySelectorAll("#letGrade input[type=text]");
    var contacts = document.querySelectorAll("#conHours input[type=text]");
    var gVals = [];
    var cVals = [];
    var failGrade = "The Letter Grade input may only be capitol letters A,B,C,D or F";
    var failHours = "The Contact Hours input may only be 1, 2, 3, 4 or 5";
    var checkGrade = /^[ABCDF]/;
    var checkhours = /^[12345]/;
    //Grab the Letter grades and process them
    //Should validate all inputs in the letGrade div to capitol A, B, C, D or F
    //Should Convert all inputs in the LetGrade div to A = 4,B = 3,C = 2,D = 1,F = 0
    //Should push resulting conversion to gVals[]
    for (var i = 0; i < grades.length; i++) {
        if (!checkGrade.test(grades[i].value)) {
            alert(failGrade);
            return false;
        }
             if (grades[i].value == "A"){
                gVals.push("4");
            }
            else if (grades[i].value == "B"){
                gVals.push("3");
            }
            else if (grades[i].value == "C"){
                gVals.push("2");
            }
            else if (grades[i].value == "D"){
                gVals.push("1");
            }
            else if (grades[i].value == "F"){
                gVals.push("0");
            }
        //Should validate all inputs in the conHours div to 1, 2, 3, 4 or 5
        //Should push all resulting values to cVals[]
        if (!checkhours.test(contacts[i].value)) {
            alert(failHours);
            return false;
        }
        cVals.push(contacts[i].value);
    }
    console.log(gVals, cVals);
    document.getElementById("cumGPA").innerHTML = (gVals[0] * cVals[0]);
};

我遇到的问题是,执行从字母等级到质量点值转换的 IF ELSE 语句将所有内容返回为 4,而不是将其与其生成的字母等级组件匹配。

感谢您在此方面的任何帮助,如果您不能直接回答问题,请解释我哪里出错了,以便我从中吸取教训。

编辑:为繁荣添加了 HTML!和“固定的”JavaScript!

<div id="calcWrapper">
    <form id="calc" name="calc" onsubmit="calcGPA(); return false;">
        <div id="letGrade">
            <input tabindex="1" type="text" maxlength="1" placeholder="Letter Grade..." />
            <input tabindex="3" type="text" maxlength="1" placeholder="Letter Grade..." />
            <input tabindex="5" type="text" maxlength="1" placeholder="Letter Grade..." />
            <input tabindex="7" type="text" maxlength="1" placeholder="Letter Grade..." />
            <input tabindex="9" type="text" maxlength="1" placeholder="Letter Grade..." />
            <input tabindex="11" type="text" maxlength="1" placeholder="Letter Grade..." />
            <label>Cumulative GPA:</label><output id="cumGPA" type="text" />
        </div>
        <div id="conHours">
            <input tabindex="2" type="text" maxlength="1" placeholder="Contact Hours..." />
            <input tabindex="4" type="text" maxlength="1" placeholder="Contact Hours..." />
            <input tabindex="6" type="text" maxlength="1" placeholder="Contact Hours..." />
            <input tabindex="8" type="text" maxlength="1" placeholder="Contact Hours..." />
            <input tabindex="10" type="text" maxlength="1" placeholder="Contact Hours..." />
            <input tabindex="12" type="text" maxlength="1" placeholder="Contact Hours..." />
            <input type="submit" value="Calculate" />
        </div>
    </form>
</div>

最佳答案

它不起作用的原因是因为在您的 if 语句中,您使用了一个 equals。单个 equals 是将 grades[i] 设置为“A” - 它实际上不是评估 grades[i] == 'A'

关于Javascript IF ELSE 语句停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20165346/

相关文章:

mysql - MySQL 中的 IF 和 Case 语句

javascript - Firefox 在控制台中忽略 "use strict"

javascript - 如何在 Singleton 类中创建事件处理程序 - Javascript

在 C 中使用 if/else 语句的命令行参数

javascript - 每个元素的高度如果高于则函数

c++ - 如果条件被跳过,则为真

javascript - 以编程方式创建的类的 CSS 样式

JavaScript - Jest/mock 中的模拟控制台 "was not called"

javascript - 在桌面滚动监听器上

在 C 中正确比较字符串