So I'm building a Rails6 with Vue/Webpack app. What I'm trying to do is change multiple components within my navbar on page scroll.
Everything is working exceptionally well, except for my nav-links Home, About ect..
rightn now when I attempt to do getElementsByClassName('navlinks') on scroll nothing happens and I'm getting this error in my console Navbar.vue:95 Uncaught TypeError: Cannot read property 'contains' of undefined
I am new to Vue and JS so I am thinking im missing something small but I can not for the life of me figure this out.
here are my nav-links:
<Navbar>
<%= link_to "Home", root_path, class: "navlinks sm:inline-block sm:mt-0", slot: "nav-link" %>
<%= link_to "About", about_path, class: "navlinks sm:inline-block sm:mt-0", slot: "nav-link" %>
<%= link_to "Features", features_path, class: "navlinks sm:inline-block sm:mt-0", slot: "nav-link" %>
<%= link_to "Pricing", pricing_path, class: "navlinks sm:inline-block sm:mt-0", slot: "nav-link" %>
<%= link_to "Contact", contact_path, class: "navlinks sm:inline-block sm:mt-0", slot: "nav-link" %>
</Navbar>
and this is the mounted function in my Vue Template:
mounted () {
this.$nextTick(function(){
window.addEventListener("scroll", function(){
var navbar = document.getElementsByClassName("navlinks");
var nav_classes = navbar.classList;
if(document.documentElement.scrollTop >= 150) {
if (nav_classes.contains("scrollLink") === false) {
nav_classes.toggle("scrollLink");
}
}
else {
if (nav_classes.contains("scrollLink") === true) {
nav_classes.toggle("scrollLink");
}
}
})
})
}
Please let me know if you need anymore information. Like I said all the other changes are all working, Im just getting the above error while trying to target multiple links to update their styles on scroll.