Encontré este código aquí en Stackoverflow que muestra palabras aleatorias en la carga de la página y muestra una nueva cuando se recarga la página. Siendo nuevo en Javascript, no sé cómo hacer que se repita entre las palabras una vez que se carga la página. Eso es mostrar una nueva palabra de la lista después de cada segundo.
El código es
var things = ['Rock', 'Paper', 'Scissor']; var thing = things[Math.floor(Math.random()*things.length)]; alert('The computer chose:' + thing);EDITAR: Me gustaría imprimir el resultado en la página y no usar la alerta.
Debido a que solo tiene un pequeño conjunto de elementos que desea recorrer y está tratando de evitar que el mismo elemento "aleatorio" se escriba muchas veces seguidas, tendrá que implementar algún tipo de sistema de "recordar". Aquí hago una copia de la matriz y splice palabras de ella, y luego la restablezco una vez que está vacía.
También he usado setTimeout en este ejemplo. (Preferencia personal). De vez en cuando, aparecerá la misma palabra dos veces seguidas a medida que se restablece la matriz. Si no quería palabras repetidas, puede incorporar ese control en la función, pero creo que eso anula todo el propósito de "piedra, papel, tijera": a veces quiere jugar "papel" 20 veces seguidas :)
const arr = ['Rock', 'Paper', 'Scissor']; const el = document.querySelector('#demo'); // `log` accepts and array of words, and an element function log(arr, el) { // Makes a copy of that array let copy = [...arr]; // Main loop that `setTimeout` calls over and over... function loop() { // Get the random number const rnd = Math.floor(Math.random() * copy.length); // Get a word by `splicing` it out of the array copy const word = copy.splice(rnd, 1); // Updated the element text content el.textContent = `The computer chose: ${word}`; // If there are no words left in the copy, reset it if (!copy.length) copy = [...arr]; // Call `loop` again setTimeout(loop, 1000); } // Call `loop` loop(); } log(arr, el); <div id="demo"></div>La respuesta correcta a su pregunta requiere el conocimiento de dos cosas. setInterval y selectores de consultas de documentos . Para responderte de la manera más simple posible, he dividido la solución a los códigos HTML y JS. En la sección HTML puedes ver el Elemento DOM "p". Tiene una identificación llamada "cosa aleatoria". En CSS nos referimos a ella como #random-thing.
El código JavaScript selecciona este elemento ( Advertencia, puede ser nulo, es por eso que queremos verificar si existe ). Luego podemos cambiar la propiedad del elemento llamada texto interno. También puede cambiarlo usando innerHTML , pero como solo queremos cambiar el contenido del texto, usemos la propiedad innerText.
const randomThingDomEl = document.getElementById("random-thing"); const things = ['Rock', 'Paper', 'Scissor']; const getRandomThing = () => things[Math.floor(Math.random()*things.length)]; setInterval(() => { if (randomThingDomEl) { randomThingDomEl.innerText = getRandomThing(); } }, 1000); <p id="random-thing" />Lo que estás buscando es setInterval()
const things = ['Rock', 'Paper', 'Scissor']; setInterval(function() { const thing = things[Math.floor(Math.random()*things.length)]; console.log('The computer chose : ' + thing); }, 1000)