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

90
Vistas
El ícono de fuente impresionante no cambia en respuesta al cambio del control deslizante

Estoy tratando de cambiar el ícono en respuesta al elemento de control de volumen (rango) y no puedo hacerlo funcionar.

mi html es:

 <div class="slidercontainer fs-4" id="slider-container"> <span style="color:white;">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class="badge rounded-pill bg-warning">Audio Volume</span> <span style="color:white;">&nbsp;&nbsp;&nbsp;&nbsp;</span> <i id="volume_low" class="fa fa-volume-down fa-2x"></i> <input type="range" min="0" max="2.5" value="0" step="0.1" class="slider" id="myRange"> <i id="volume-up" class="fa fa-volume-up fa-2x"></i> </div>

... y se muestra correctamente en un navegador

Mi javascript es:

 // for slider const slider = document.querySelector("#myRange"); $("#myRange").on("input change", function() { const sliderValue = slider.value; if(sliderValue==0){ console.log('zero', sliderValue ); $('#volume_low').find("i").toggleClass("fa fa-volume-off fa-2x fa fa-volume-down fa-2x"); }else { console.log('nonzero', sliderValue); $('#volume_low').find("i").toggleClass("fa fa-volume-down fa-2x fa fa-volume-off fa-2x"); } }); // end of for slider

No funciona (el ícono no cambia en la posición más a la izquierda según sea necesario), no muestra ningún error

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

0

En el siguiente ejemplo, se proporcionan tres cambios de iconos diferentes según el estado del sonido. Los estilos de clase aplicados previamente al elemento <i> se eliminan y se asignan nuevos estilos de clase.

 /* Global Variable; It is initialized using the context of the class implemented in the <i> element. */ let beforeClass = "off"; $("#myRange").on("input change", function() { const sliderValue = $("#myRange").val(); /* previously applied class styles are removed */ $('#volume_low').removeClass(`fa fa-volume-${beforeClass} fa-2x`); if(sliderValue == 0) { $('#volume_low').addClass("fa fa-volume-off fa-2x"); beforeClass = "off"; } else if(sliderValue > 0 && sliderValue <= 1) { $('#volume_low').addClass("fa fa-volume-down fa-2x"); beforeClass = "down"; } else if(sliderValue > 1) { $('#volume_low').addClass("fa fa-volume-up fa-2x"); beforeClass = "up"; } console.clear(); console.log(`Value: ${sliderValue}`); });
 i { margin-left: 40px; width: 50px; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" integrity="sha512-9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <div class="slidercontainer fs-4" id="slider-container"> <span style="color:white;">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class="badge rounded-pill bg-warning">Audio Volume</span> <span style="color:white;">&nbsp;&nbsp;&nbsp;&nbsp;</span><br><br> <i id="volume_low" class="fa fa-volume-off fa-2x"></i> <input type="range" min="0" max="2.5" value="0" step="0.1" class="slider" id="myRange"> <i id="volume-up" class="fa fa-volume-up fa-2x"></i> </div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Te equivocaste al apuntar a la i.

No necesitas .find("i") porque ya lo hiciste con $('#volume_low')

 // for slider const slider = document.querySelector("#myRange"); $("#myRange").on("input change", function() { const sliderValue = slider.value; if (sliderValue == 0) { console.log('zero', sliderValue ); $('#volume_low').removeClass('fa-volume-down').addClass("fa-volume-off"); } else { console.log('nonzero', sliderValue); $('#volume_low').removeClass('fa-volume-off').addClass("fa-volume-down"); } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" integrity="sha512-9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <div class="slidercontainer fs-4" id="slider-container"> <span style="color:white;">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class="badge rounded-pill bg-warning">Audio Volume</span> <span style="color:white;">&nbsp;&nbsp;&nbsp;&nbsp;</span> <i id="volume_low" class="fa fa-volume-down fa-2x"></i> <input type="range" min="0" max="2.5" value="0" step="0.1" class="slider" id="myRange"> <i id="volume-up" class="fa fa-volume-up fa-2x"></i> </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