0

I'm quite new to javascript and I have tried my hand at making a little menu with click event which you can find here. https://codepen.io/Laurie312/pen/YzxJJbx

The problem is when you click off from the hamburger menu you always return to the top of the page. Now I have seen that there is a href="javascript:void(0)" instruction which could be useful, but I'm not sure whether that should be applied using html or if you need to use it in parallel with js I've also read that it shouldn't really be used. I'm not sure if my situation provides a good use case for it.

I've had a look at various problems on stackoverflow as linked below and they all seem like they might be closely related to the issue I'm facing, but I wanted to make sure I understood the issue correctly.

page jumps to top on menu click VBA to click on link with href=javascript:void(0);

I apologise if this seems like a silly question. I'm just not sure where to start.

Lauro235
  • 121
  • 1
  • 8
  • That's perfect! Do you mind telling me how to tell the difference between anchor vs button. Why the behaviour difference? Is there a good link you can point me to for extra reading? Thanks again – Lauro235 Nov 14 '21 at 23:44

2 Answers2

1

Unless you prevent default event handling, the browser will try and navigate the user to the <a href="#" ...> anchor; without a name, it's the top of the page.

You need to prevent the default event handling in your click handler:

toggleButton.addEventListener('click', (evt) => {
    evt.preventDefault();
    navList.classList.toggle('active')
})
digitalbreed
  • 3,953
  • 4
  • 26
  • 24
0

You can use button in place of a as:

DEMO

a tag Used to navigate to pages and resources

button Generally perform some button task, like opening hamburger menu

<button id="toggle-button">
  <span class="bar"></span>
  <span class="bar"></span>
  <span class="bar"></span>
</button>

and use styles as :

#toggle-button {
    ...
    border: none;
    background: transparent;
}
DecPK
  • 24,537
  • 6
  • 26
  • 42