Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

180
Vistas
Llamar variables desde otra función

Soy nuevo en JavaScript y actualmente trato de obtener variables dentro de una función para que funcionen fuera de ella y actualmente me encontré con un muro en el que parece que no puedo hacer que funcione.

El escenario es que quiero cambiar la URL a través de un formulario desplegable usando una combinación de Javascript y HTML. Si pongo la instrucción if else dentro de la función, funcionará sin problemas, pero en mi escenario, necesito ponerla fuera de la función y no funciona incluso después de hacer que la variable sea global.

Probé varias soluciones de preguntas relacionadas con mi problema, pero no parece funcionar para mi escenario.

Aquí está el código que estoy usando actualmente.

 var documentLink = document.getElementById('documentLink'); function getDocument(option) { chosenDocument = option.value; } if (chosenDocument === "Google") { documentLink.href = "https://www.google.com"; } else if (chosenDocument === "duckduckgo") { documentLink.href = "https://www.duckduckgo.com"; }

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Cuando coloque sus códigos directamente en el cuerpo de la etiqueta "script", se ejecutará solo una vez (cuando se cargue el script). Debe poner sus códigos en un lugar que pueda ejecutarse más de una vez, por ejemplo, ponerlo en una función y llamarla cuando se active un evento.

Si necesita que el bloque "if" se ejecute cada vez que cambie el valor desplegable, tiene estas opciones: 1- mueva su código a la función getDocument 2- mueva su bloque "if" a una nueva función y luego llámelo en la función getDocument

o 3- mueva su bloque "si" a una nueva función y luego asígnelo a otro evento que coincida con el evento desplegable (como menú desplegable en cambio o menú desplegable en desenfoque)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto es probablemente lo que querías hacer.

Tenga en cuenta que uso eventListeners recomendados

 window.addEventListener("DOMContentLoaded", function() { // when elements are available in page const documentLink = document.getElementById('documentLink'); document.getElementById("searchSites").addEventListener("change", function() { const chosenSite = this.value; if (chosenSite === "Google") { // this could be done nicer with a lookup table documentLink.href = "https://www.google.com"; } else if (chosenSite === "duckduckgo") { documentLink.href = "https://www.duckduckgo.com"; } }) documentLink.addEventListener("click", function(e) { if (this.getAttribute("href") === "") { // not set e.preventDefault(); // stop link alert("Please select a site first"); } }) })
 <select id="searchSites"> <option value="">Please select</option> <option value="Google">Google</option> <option value="duckduckgo">duckduckgo</option> </select><br/> <a href="" id="documentLink">GO</a>

about 4 years ago · Juan Pablo Isaza Denunciar

0

  1. Envuelva su código para que se ejecute en el evento DOMContentLoaded.
  2. Mueva la función getDocument fuera de este detector de eventos.
  3. Supongo que ya tiene un detector de eventos de opción de selección y tiene una variable llamada SelectOption con valor seleccionado

Puede probar el siguiente código:

 <script> // Function extracts and returns value from provided parameter function getDocumentValue(option) { return option.value; } window.addEventListener('DOMContentLoaded', () => { const documentLink = document.getElementById('documentLink'); // Id is fine if we are sure it wont be duplicated. const chosenDocument = getDocumentValue(SelectOption); if (chosenDocument === "Google" ) { documentLink.href = "https://www.google.com"; } else if (chosenDocument === "duckduckgo") { documentLink.href = "https://www.duckduckgo.com"; } }) </script>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda