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

329
Vistas
Llamar a una función desde un archivo JS no funciona

Estoy usando React para ver mis páginas. Me encontré con este problema si trato de llamar a una función desde un archivo .js, no pasa nada. Básicamente, tengo un pequeño programa que tiene dos columnas. Cada columna tiene una etiqueta <p> que contiene la Columna 1 y la Columna 2. Hay un botón debajo que una vez que haga clic en él, ambas Columns deberían cambiar.

index.js

 import "../style.css"; //import "./java.js"; class index extends React.Component { render() { return( <div className="container"> <div className="columns" id="columnsToSwitch"> <div className="column1" id="column1_id"> <p>Column1</p> </div> <div className="column2" id="column2_id"> <p>Column 2</p> </div> </div> <div className="switch" id="switch_id" onClick={this.switchColumns}>Switch</div> </div> ); } } export default index;

java.js

 const switchCol = document.querySelectorAll("div.columns"); const el = document.getElementById("switch_id"); if(el) { el.addEventListener("click", switchColumns, false); } switchCol.forEach(switches => switches.addEventListener('click', switchColumns)); function switchColumns(){ const makeSwitch1 = document.getElementById('column1_id'); document.getElementById('column2_id').appendChild(makeSwitch1); const makeSwitch2 = document.getElementById('column2_id'); document.getElementById('column1_id').appendChild(makeSwitch2); }

Method 1: Traté de importar el archivo .js que contiene la función. No sucede nada después de hacer clic en "Cambiar".

Method 2: Usar onClick dentro de una etiqueta.

 <div className="switch" id="switch_id" onClick={this.switchColumns}>Switch</div>

me sale un par de errores,

Uncaught TypeError: Cannot read properties of undefined (reading 'switchColumns') The above error occurred in the <index> component:

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

0

En esta línea:

 const switchCol = document.querySelectorAll(".switchCol");

No hay elementos con la clase de 'switchCol', por lo que obtendrá una lista de NodeList vacía que hace que el bucle forEach no se ejecute, por lo que no hay eventos de clic en las columnas.

En el bloque forEach :

 switchCol.forEach(switches => { switches.addEventListener("column1", switchColumns); switches.addEventListener("column2", switchColumns); });

"column1" y "column2" no son detectores de eventos válidos y no es necesario que haya dos detectores de eventos para un elemento. Creo que quieres escribir lo siguiente:

 switchCol.forEach(switch => switch.addEventListener('click', switchColumns))

Ahora en su función principal de columna de conmutación:

 function switchColumns(){ const makeSwitch1 = document.getElementById('column1'); document.getElementById('column2').appendChild(makeSwitch1); const makeSwitch2 = document.getElementById('column2'); document.getElementById('column1').appendChild(makeSwitch2);

}

Las variables makeSwitch1 y makeSwitch2 no estarán definidas ya que no tiene ningún elemento con una identificación de column1 y column2 . Lo que está causando su problema con la segunda solución que intentó.

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