En este artículo, abordaremos un problema común en el desarrollo web: la modificación de texto en un div según la opción seleccionada en un elemento select
. El objetivo es mostrar un texto específico al hacer clic en un botón "Abrir", cambiar el texto basado en la selección del usuario y ocultar el texto al presionar un botón "Cerrar".
Problemas Identificados
-
Cambio de texto basado en la selección: El código dada no está gestionando correctamente el evento de selección. Cada opción en el select tiene un manejo separado del evento
change
, lo que resulta en una redudancia innecesaria. - Visibilidad del texto: El método de ocultar y mostrar el texto puede mejorarse para ser más limpio y eficiente.
Solución Propuesta
1. Consolidar el Manejo de select
En vez de tener múltiples funciones para cada opción, podemos usar un solo evento que verifique la opción seleccionada y ajuste la visibilidad del texto correspondiente.
2. Código JavaScript Optimizado
Aquí se muestra el código JavaScript corregido y optimizado:
$(document).ready(function() {
$('#open').on('click', function() {
$('#Text1').addClass('visible'); // Mostrar texto 1 al abrir
});
$('#close').on('click', function() {
$('#Text1, #Text2, #Text3, #Text4, #Text5').removeClass('visible'); // Ocultar todos al cerrar
});
$("#select").on('change', function() {
$('#Text1, #Text2, #Text3, #Text4, #Text5').removeClass('visible'); // Ocultar todos
let selectedValue = $(this).val(); // Obtener valor seleccionado
$('#Text' + selectedValue).addClass('visible'); // Mostrar texto correspondiente
});
});
3. Código CSS
No se requieren cambios en el CSS, ya que el código existente es apropiado para manejar la visibilidad con clases.
4. Código HTML
El marcado HTML sigue siendo el mismo, solo asegura que el script de jQuery esté correctamente enlazado:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<button id="open">Open</button>
<button id="close">Close</button>
<select id="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<div>
<div id="Text1">Show text 1</div>
<div id="Text2">Show text 2</div>
<div id="Text3">Show text 3</div>
<div id="Text4">Show text 4</div>
<div id="Text5">Show text 5</div>
</div>
Conclusión
Al aplicar estos cambios, se mejorará la legibilidad y eficiencia del código. El evento de select
ahora es más manejable y los textos se mostrarán y ocultarán correctamente según las acciones del usuario. Puedes probar la implementación mejorada en un entorno como JSFiddle o en tu propia aplicación web.