先前的 JavaScript 事件处理程序的存在使下一个事件处理程序无效

The presence of a prior JavaScript event handler nullifies the next event handler

我有一个奇怪的问题,我有两个事件处理程序用于两个网页上的两个单独的按钮。我不认为第一个会影响第二个,但是当第一个存在时,按下连接的按钮时第二个不会触发。当我切换顺序时,第一个总是会开火,但第二个不会。如果我删除第一个,第二个就会触发。这是我的代码:

function calculateBMI() {
        var weight = parseInt(document.getElementById("Weight").value);
        var height = parseInt(document.getElementById("Height").value);

        //Invalid input check
        if (weight < 0 || weight > 750) {
            alert("Weight must be greater than 0 and less than or equal to 750");
            return;
        }
        if (height < 0 || height > 100) {
            alert("Height must be greater than 0 and less than or equal to 100");
            return;
        }

        var resultArea = document.getElementById("Result");
        resultArea.value = (weight * 703) / (height * 2);
}
document.getElementById("submit").addEventListener("click", calculateBMI);

function validateInput() {
    var number1 = document.getElementById("Start").value;
    var number2 = document.getElementById("End").value;
    if (!isNaN(number1) || !isNaN(number2)) {
        alert("Sorry, you must enter a valid number");
        return false
    }
    else if (number1 < 0 || number2 < 0) {
        alert("Sorry, you must enter a positive number");
        return false;
    }
    else if (number2 < number1) {
        alert("Sorry, the second number must be greater than the first number");
        return false;
    }
    else {
        return true;
    }
}

function displayPrimeNumbers() {
    if (validateInput()) {
        alert("Test");
    }
}
document.getElementById("getPrimed").addEventListener("click", displayPrimeNumbers);
<input id="submit" type="submit" name="submit">
<input id="getPrimed" type="button" value="Get Primes" name="getPrimed">

当我按下 getPrimed 按钮时,即使 validateInput 函数 returns 为真,'Test' 也不会通过警报在 window 中输出。我还在代码的第 25 行(第一个 addEventListener)的 firefox 控制台中收到此错误:

Uncaught TypeError: document.getElementById(...) is null

我希望这些信息足以帮助解决我的问题!

在尝试使用之前检查各种按钮元素是否存在 .addEventListener()

发生的情况是,如果您的文件中的第一个不存在,该错误会阻止其余代码执行以进入下一个

简单示例

var sub = document.getElementById("submit");
// null if doesn't exist, truthy element if it does
if (sub) { 
   sub.addEventListener("click", calculateBMI);
}