So, I am dynamically adding a "side navigation" bar using JavaScript. It has circles, which when clicked, will take you to a certain DIV on the page. For some reason, it isn't scrolling to the correct div.
For example, I have a div Circle1, which when clicked, should you the user to the top of the page. BUT, it is taking the user to the div A (which should be scrolled to when Circle2 is clicked).
Basically, every onClick function for each of my circles is off by 1. Here is JSFiddle to demonstrate: http://jsfiddle.net/zu6516eu/9/
Any ideas? Thanks
document.getElementById('Circle1').onclick = function() {
scrollToTop();
};
Full Code
var offset = 0;
//initialize side nav bar
jQuery(document).ready(function() {
var SideBar = document.createElement("Div");
SideBar.setAttribute("id", "SideBarNav");
SideBar.style.color = "white";
SideBar.style.display = "inline-block";
SideBar.style.position = "fixed";
SideBar.style.top = "50%";
SideBar.style.right = "0";
SideBar.style.transform = "translate(-50%, -50%)";
SideBar.style.textAlign = "center";
SideBar.style.border = "2px solid rgba(0, 0, 255, 0.5)";
var Circle1 = document.createElement("Div");
Circle1.innerHTML = "•";
Circle1.setAttribute("id", "Circle1");
Circle1.style.textAlign = "center";
Circle1.style.fontSize = "3.5em";
Circle1.style.margin = "0 auto";
Circle1.style.opacity = ".7";
Circle1.style.color = "blue";
Circle1.style.lineHeight = ".5em";
var Circle2 = document.createElement("Div");
Circle2.innerHTML = "•";
Circle2.setAttribute("id", "Circle2");
Circle2.style.textAlign = "center";
Circle2.style.fontSize = "3.5em";
Circle2.style.margin = "0 auto";
Circle2.style.opacity = ".1";
Circle2.style.color = "blue";
Circle2.style.lineHeight = ".5em";
var Circle3 = document.createElement("Div");
Circle3.innerHTML = "•";
Circle3.setAttribute("id", "Circle3");
Circle3.style.textAlign = "center";
Circle3.style.fontSize = "3.5em";
Circle3.style.margin = "0 auto";
Circle3.style.opacity = ".1";
Circle3.style.color = "blue";
Circle3.style.lineHeight = ".5em";
var Circle4 = document.createElement("Div");
Circle4.innerHTML = "•";
Circle4.setAttribute("id", "Circle4");
Circle4.style.textAlign = "center";
Circle4.style.fontSize = "3.5em";
Circle4.style.margin = "0 auto";
Circle4.style.opacity = ".1";
Circle4.style.color = "blue";
Circle4.style.lineHeight = ".5em";
SideBar.appendChild(Circle1);
SideBar.appendChild(Circle2);
SideBar.appendChild(Circle3);
SideBar.appendChild(Circle4);
document.body.appendChild(SideBar);
document.getElementById('Circle1').onclick = function() {
scrollToTop();
};
document.getElementById('Circle2').onclick = function() {
scrollFunction(A);
};
document.getElementById('Circle3').onclick = function() {
scrollFunction(B);
};
document.getElementById('Circle4').onclick = function() {
scrollFunction(C);
};
offset = jQuery(".row.span_24").height();
console.log(offset);
});
function scrollFunction(targetString) {
var target = jQuery(targetString);
if (target.length) {
console.log(offset);
var top = target.offset().top - offset;
jQuery('html, body').animate({
scrollTop: $(target).offset().top - 15
}, 'slow');
return false;
}
}
function scrollToTop() {
jQuery('html, body').animate({
scrollTop: 0
}, 'slow');
}