Search code examples
javascripthtmlrandomhyperlinkhref

adding new random number after a link on every press


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/" won't append to the start.

window.onclick = () => {
  document.querySelectorAll("a").forEach(link =>
    link.setAttribute("href", Math.floor(Math.random() * 111392.8) + 1)
  );
};
<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>


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>