Even without JS, there are tricks to make the upvote button work without refreshing the page. HN used to do this, not sure if it still does.
<style>.vote-42:active{ background-image: url(/api/vote/42) } </style> <a class="vote-42">Vote</a>
https://codepen.io/anon/pen/weMwRz
Realistically, I'd probably never use it because it's so dependent on browser behavior, but still a cool alternative.