I am using a for(){} statement to loop through every element I have in order to change the text color and remove underlining when a function is called. After doing so, the function will then set the font color and underline the selected text. However, I keep receiving the error message Uncaught TypeError: Cannot read property 'style' of null. I triple-checked My element’s names, making sure that they were right. They were.
let videos = ["video 1","video 2"];
let current_video = undefined;
window.onload = function () {
function update_video(video) {
// loops through all of my h2 elements to change their style to default
for(var i = -1 ; i < videos.length ; i++) {
document.getElementById(String("vid-"+i)).style.color = "#ca6735";
document.getElementById(String("vid-"+i)).style.textDecoration = "none";
}
// sets the selected h2 element (using a button to select it) to a new color with an underline.
current_video = Number(video);
document.getElementById(String("vid-"+video)).style.color = "#49a1b6";
document.getElementById(String("vid-"+video)).style.textDecoration = "underline";
}
document.getElementById("vid-bt-0").addEventListener("click", function() {
update_video(0);
});
document.getElementById("vid-bt-1").addEventListener("click", function() {
update_video(1);
});
}
The code above is what I have currently. The code underneath the second comment works.
Advertisement
Answer
I guess because of i = -1 in for loop the problem occurs:
So, try with the below code:
for(var i = 0; i < videos.length ; i++) {
document.getElementById(String("vid-"+i)).style.color = "#ca6735";
document.getElementById(String("vid-"+i)).style.textDecoration = "none";
}