[SOLVED] adding new random number after a link on every press

Question

This Content is from Stack Overflow

the goal of my code is to generate a new link each time “generate” is pressed, so that i can find new songs for geometry dash without having to spam numbers.

i have tried the string below but every time the button were to be clicked, it would append a new set of numbers on the end. i wish for the program to not require a refresh

document.querySelectorAll("a").forEach(link =>
     link.setAttribute("href", link.getAttribute("href") + Math.floor(Math.random() * 111392.8) + 1)

this is my current attempt. i have gotten the goal of a new number on every button press with a refresh but the prefix of “https://www.newgrounds.com/audio/listen/” wont append to the start.

<!DOCTYPE html>
<html> 

<head> 
<link rel="stylesheet" href="CSS1.css">

<script>
  window.onclick = () => {
    document.querySelectorAll("a").forEach(link =>
     link.setAttribute("href", Math.floor(Math.random() * 111392.8) + 1)
    );
  };
</script>

</head>

<title>
Newgrounds Song Generator
</title> 

<body>

<h1>Click the button to visit a random song!</h1>

<a href="https://www.newgrounds.com/audio/listen/" target="_blank">
<button>
Generate
</button>
</a>

</body>

</html>

thank you for reading and i hope you can help! 🙂

Solution

Don’t have a button in a link!

The code can be much simpler with a form

const url = "https://www.newgrounds.com/audio/listen/";
document.getElementById("generate").addEventListener("submit", function() {
  const link = url + Math.floor(Math.random() * 111392.8) + 1;
  console.log(link)
  this.action = link; // SO does not allow a target="_blank" in a snippet
})
<title>
  Newgrounds Song Generator
</title>
<h1>Click the button to visit a random song!</h1>
<form id="generate" target="_blank">
  <button type="submit">Generate</button>
</form>

Or a link styled as a button

const url = "https://www.newgrounds.com/audio/listen/";
document.getElementById("generate").addEventListener("click", function() {
  const link = url + Math.floor(Math.random() * 111392.8) + 1;
  console.log(link)
  this.href = link; // SO does not allow a target="_blank" in a snippet
})
.button {
  font: bold 11px Arial;
  text-decoration: none;
  background-color: #EEEEEE;
  color: #333333;
  padding: 2px 6px 2px 6px;
  border-top: 1px solid #CCCCCC;
  border-right: 1px solid #333333;
  border-bottom: 1px solid #333333;
  border-left: 1px solid #CCCCCC;
}
<title>
  Newgrounds Song Generator
</title>
<h1>Click the button to visit a random song!</h1>
<a class="button" id="generate" target="_blank" href="">Generate</a>

This Question was asked in StackOverflow and Answered by mplungjan It is licensed under the terms of CC BY-SA 2.5.CC BY-SA 3.0.CC BY-SA 4.0.

people found this article helpful. What about you?