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

214
Vistas
¿Cómo resolver la referencia del ciclo de Javascript?

primer código

HTML

 <div> <select class="a"> <option value="1">aaa</option> <option value="2">bbb</option> </select> <input class="b"> </div>

A.js

 const a = (function initA() { const a = document.querySelector('select.a'); a.addEventListener('change', function() { b.setValue(this.value); }) return { value: () => a.value } })() const b = (function initB() { const b = document.querySelector('input.b'); b.addEventListener('keyup', function (){ if (this.value.startsWith(a.value()) === false) { b.value = a.value(); } }) return { setValue: function (val) { b.value = val; } } })()

Un evento que inicializa el valor de entrada con el valor de selección cuando cambia la selección, y si el valor de entrada no comienza con el valor de selección, se inicializa con el valor de selección.

Pensé que se usaría en muchos lugares, así que moví el código y lo modularicé.

Común.js

 export function initA() { const a = document.querySelector('select.a'); a.addEventListener('change', function() { b.setValue(this.value); }) return { value: () => a.value } } export function initB() { const b = document.querySelector('input.b'); b.addEventListener('keyup', function (){ if (this.value.startsWith(a.value()) === false) { b.value = a.value(); } }) return { setValue: function (val) { b.value = val; } } }

A.js

 const a = initA(); const b = initB();

Pero ocurre un error de referencia no detectado

 const a = initA(b); const b = initB(a);

Lo mismo ocurre con dar una variable.

como resolver problema?

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

0

Dado que una select requiere una input para funcionar correctamente y al revés, simplemente fusionaría las dos funciones en una. Ambas funciones no son realmente independientes. También prefiero pasar los elementos en lugar de asumir select.a y input.b .

 function initAB(a, b){ if(a && b){ a.addEventListener('change', function(b) { b.value = this.value }.bind(a, b)); b.addEventListener('keyup', function (a){ if (this.value.startsWith(a.value) === false) { b.value = a.value; } }.bind(b, a)); return true }; return false }; initAB( document.querySelector('select.a'), document.querySelector('input.b') );
 <div> <select class="a"> <option value="1">aaa</option> <option value="2">bbb</option> </select> <input class="b"> </div>

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