El problema se explica más claramente aquí: estoy creando un generador de cotizaciones aleatorias simple usando JavaScript. Tengo cientos de comillas en una matriz en un archivo llamado "quotes.js" y luego la función real para que funcione en un archivo llamado "script.js" que están vinculados a una página "index.html". Recibo el error en mi página "script.js", que se supone que permite obtener una cita aleatoria de la matriz en quotes.js y mostrar esa cita aleatoria en la pantalla con cada actualización de la página (vería el cita en la consola y no en la página real todavía). ¿Alguien puede explicarme por qué recibo este error y cómo definir la variable localQuotes?
Este es el error que recibo en la pestaña Consola de herramientas para desarrolladores en Chrome:
Error de referencia no capturado: localQuotes no está definido en newQuote (script.js:3) en script.js:7 newQuote @ script.js:3 (anónimo) @ script.js:7
Aquí está mi código de script.js:
function newQuote() { const quote = localQuotes[Math.floor(Math.random() * localQuotes.length)]; console.log(quote); } newQuote();
Aquí hay una versión más corta de la matriz en quotes.js:
const localQuotes = [ { text: 'The greatest remedy for anger is delay.', author: 'Seneca', }, { text: 'Growth itself contains the germ of happiness.', author: 'Pearl Buck', }, { text: "You can do what's reasonable or you can decide what's possible.", author: null, }, ];
Y finalmente mi JavaScript vinculado en el archivo html:
<!-- Script --> <script>src="quotes.js"</script> <script src="script.js"></script>
Su quotes.js deberá otorgar acceso global a la variable para que funcione. Así es como debes hacerlo:
window.localQuotes = {...}
Ah, y su etiqueta de secuencia de comandos es incorrecta, tiene un error tipográfico allí, esperaba que fuera un error tipográfico al escribir la pregunta, así que si aún no funciona, corrija ese error tipográfico.
Me lo imaginé. Estaba en las etiquetas html.
En vez de:
<script>src="quotes.js"</script> <script>src="script.js"</script>
Necesita ser:
<script src="quotes.js"></script> <script src="script.js"></script>
¡RESUELTO!