This is part of my class homework. It is a small web application. The code part below is a function for a select button (checkbox). The code is working fine.
My issue is I get this error on console:
Uncaught TypeError: Cannot set property 'checked' of null
at selectGirls (indexj.js:163)
at HTMLAnchorElement.onclick (index.html:137)
I know I get this error because, I haven't these elements on every page. To clarify that, I mean page 1 has two checkboxes, but page 2 has 5 checkboxes, like that.
I want to use this same JS file for all pages. My question is how can I avoid these console errors best way possible? I do not want to make them hide from console as a solution. I really appreciate your input.
function selectAllStudents() {
    unselectAllStudents();
    let boxes = $(".scores").toArray();
    document.getElementById('check_Terrilyn').checked = true;
    document.getElementById('check_Vinnie').checked = true;
    document.getElementById('check_Boren').checked = true;
    document.getElementById('check_Tempie').checked = true;
    document.getElementById('check_Mapes').checked = true;
    document.getElementById('check_Fletcher').checked = true;
    document.getElementById('check_Bovee').checked = true;
    document.getElementById('check_Figgs').checked = true;
}
The simplest is to check if they are there
if (document.getElementById('check_Terrilyn'))
  document.getElementById('check_Terrilyn').checked = true;
Edit
A more modern approach, and given that there are an unknown amount of checkboxes, could be to use querySelectorAll.
It will return an array of elements, and e.g., and as your code suggest, all the checkeboxes's id starts with check_, you can use it like this with an attribute selector:
var els = document.querySelectorAll('[id^="check_"]');
els.forEach(function (el) {
  	el.checked = true;
});
<input id="check_0" type="checkbox" value="0">
<input id="check_1" type="checkbox" value="1">
<input id="check_2" type="checkbox" value="2">
<input id="check_3" type="checkbox" value="3">
if (document.getElementById('check_Terrilyn')){
    document.getElementById('check_Terrilyn').checked = true;
}
//ES6
Array.from(document.getElementsByClassName('commonclass')).forEach(e => {
    e.checked = true;
});
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With