así que estaba trabajando en el tablero del bot de Discord y estoy tratando de hacer botones de redirección que vayan a las selecciones del usuario del servidor de Discord. Así que estoy tratando de hacer una dirección dinámica como: http://localhost:3000/dash/discord/servers/${guildid}, pero cuando obtengo la identificación del gremio y trato de pasarla en la función button.onclick obtengo 3 y no ej. 1,2,3. Todo está en un bucle, así que estoy un poco confundido. ¡Por favor ayuda!
Todo el código está en un archivo html - script
Código de bucle:
documento.addEventListener('DOMContentLoaded', función () {
for (var i = 0; i < guildsLength; i++) { var button = document.createElement('button'); button.type = 'button'; button.innerHTML = Guildss[i] + " ID: " + IDs[i]; button.className = 'btn-styled'; button.id = 'b1'; button.onclick = function (){ location.href = `http://localhost:3000/dash/discord/servers/${IDs[i]}` } document.body.appendChild(button); } }, false);Obtiene siempre el último valor i debido a los cierres de javascript . Cuando se llama al método onclick i accede a la variable definida en su función externa, y en ese momento tiene el valor i tenía cuando terminó el bucle for .
Puede usar etiquetas <a> y almacenar la URL en el atributo href . De esta manera, no necesita ninguna devolución de llamada y, si lo desea, puede diseñar el ancla como un botón.