• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

191
Views
¿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?

over 3 years ago · Juan Pablo Isaza
1 answers
Answer question

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>

over 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Show me some job opportunities
There's an error!