отсутствует документ в document.getElementById
ошибка в возрасте - возможно, пользователь еще не n - yearBorn
Неверный HTML, набор полей должен быть внутри формы
Я настоятельно рекомендую EventListener и сбросить цвет до ошибки
Если вы не хотите предложений, то
const diff = n - yearBorn - age ;
if (diff !== 0 && diff !== 1) {
достаточно
window.addEventListener("load", function() {
document.getElementById("frmName").addEventListener("submit", function(e) {
const errors = [];
let obj;
obj = document.getElementById('name');
obj.classList.toggle("error", 0)
if (obj.value == "") {
errors.push('Please enter your name.');
obj.classList.toggle("error", 1)
}
obj = document.getElementById('yearborn');
obj.classList.toggle("error", 0)
if (obj.value == "") {
errors.push('Please enter the year you were born.');
obj.classList.toggle("error", 1)
}
obj = document.getElementById('age');
obj.classList.toggle("error", 0)
if (document.getElementById('age').value == "") {
errors.push('Please enter your age.');
obj.classList.toggle("error", 1)
}
const n = new Date().getFullYear();
const age = +document.getElementById('age').value;
const yearBorn = +document.getElementById('yearborn').value;
const diff = n - yearBorn - age ;
if (diff !== 0 && diff !== 1) {
errors.push('Please make sure that your age and year born is correct.');
obj.classList.toggle("error", 1)
}
if (errors.length > 0) {
alert(errors.join("\n"));
e.preventDefault();
}
});
});
.error {
border-color: red;
}
<form id="frmName" method=post action="#">
<fieldset>
<h1>Inf115 compulsory assignment 3</h1>
<p>
<b>Name:</b><input type="text" id="name" name="name" maxlength="20" />
</p>
<p>
<b>Year of birth:</b><input type=int id="yearborn" maxlength="4" />
</p>
<p>
<b>Age:</b><input type=int id="age" maxlength="3" />
</p>
<p>
<input type="submit" value="Submit" />
<input type="reset" value="Reset" />
</p>
</fieldset>
</form>