Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Modificar estilo con javascript

Estas en el tema de Modificar estilo con javascript en el foro de Frameworks JS en Foros del Web. Hola compañeros! Soy nuevo por aquí y tengo conocimientos escasos de Javascript pero necesito la ayuda de este lenguaje para conseguir lo que me propongo. ...

  #1 (permalink)  
Antiguo 31/08/2012, 23:34
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Modificar estilo con javascript

Hola compañeros!

Soy nuevo por aquí y tengo conocimientos escasos de Javascript pero necesito la ayuda de este lenguaje para conseguir lo que me propongo.

Tengo un menú simple en vertical que al pasar por encima me cambia el estilo con el :hover. Lo que me gustaría hacer es que al clicar se me mantuviera el mismo estilo que utilizo con el :hover y cuando clicara en otro, el primero se me desactivara y me activara el que acabo de clicar encima.

Alguien me puede ayudar u orientar, por favor?
  #2 (permalink)  
Antiguo 01/09/2012, 12:55
Avatar de franciscoooooouu  
Fecha de Ingreso: marzo-2010
Mensajes: 10
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Modificar estilo con javascript

Si usas jQuery supongo que se puede hacer así:

Código HTML:
Ver original
  1. <ul>
  2.  <li>Primero</li>
  3.  <li>Segundo</li>
  4.  <li>Tercero</li>
  5. </ul>


Código Javascript:
Ver original
  1. $(li).click(function () {
  2.   $(".hover").removeClass("hover");
  3.   $(this).addClass("hover");
  4. });


No sé si funciona porque no lo he probado. Ya me dices.
  #3 (permalink)  
Antiguo 01/09/2012, 13:55
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

Cita:
Iniciado por franciscoooooouu Ver Mensaje
Si usas jQuery supongo que se puede hacer así:

Código HTML:
Ver original
  1. <ul>
  2.  <li>Primero</li>
  3.  <li>Segundo</li>
  4.  <li>Tercero</li>
  5. </ul>


Código Javascript:
Ver original
  1. $(li).click(function () {
  2.   $(".hover").removeClass("hover");
  3.   $(this).addClass("hover");
  4. });


No sé si funciona porque no lo he probado. Ya me dices.
Creo que el selector del LI sería con
Código Javascript:
Ver original
  1. $("li").click
  #4 (permalink)  
Antiguo 01/09/2012, 15:14
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Muchas gracias a los dos por contestar.

En principio no me ha funcionado no sé si hago algo mal. La cuestión es que de Javascript sé poquillo y de JQuery nada y no lo entiendo muy bien.

Os pongo el código HTML I CSS que tengo a ver si os ocurre alguna solución?

Os lo agradeceré mucho
HTML

<ul class="submenu_links">
<a style='cursor: pointer;' value="PrimerCicle" onClick="PrimerCicle();"><li>Primer Cicle d’Educació Infantil (0/3 anys)</li></a>
<a style='cursor: pointer;' value="Assesorament" onClick="Assesorament();"><li>Assessorament Pedagògic</li></a>
<a style='cursor: pointer;' value="ServeiMenjador" onClick="ServeiMenjador();">Servei de Menjador amb cuina casolana</li></a>
<a style='cursor: pointer;' value="BonoEscolar" onClick="BonoEscolar();"><li>Bono escolar</li></a>
<a style='cursor: pointer;' value="EspaisFamiliars" onClick="EspaisFamiliars();"><li>Espais familiars per infants matriculats</li></a>
<a style='cursor: pointer;' value="AlletamentMatern" onClick="AlletamentMatern();"><li>Programa d’alletament matern</li></a>
<a style='cursor: pointer;' value="TallerMassatges" onClick="TallerMassatges();"><li>Tallers de massatges</li></a><
<a style='cursor: pointer;' value="EscolaEstiu" onClick="EscolaEstiu();"><li>Escola d’estiu</li></a>
</ul>


CSS

.submenu_links li:hover
{
font-weight: bold;
background: url("flechita_links.gif") right no-repeat;
color: #15A567;
padding-right: 15px; }
  #5 (permalink)  
Antiguo 01/09/2012, 15:35
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

¿No deberían ir los <a href> dentro de los <li>? De todas formas, creo que debería funcionar así ¿no?
  #6 (permalink)  
Antiguo 01/09/2012, 15:38
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

lo he probado de las dos maneras y no me funciona.

También he pensado que a mi lo que me interesa es que tenga el estilo que os he pasado. Me refiero que lo que me has comentado no seleccionas todos los li?

Muchas gracias por contestar
  #7 (permalink)  
Antiguo 01/09/2012, 15:40
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

La parte javascript supongo que la pongo en un archivo aparte y lo añado en el head verdad?
  #8 (permalink)  
Antiguo 01/09/2012, 15:43
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

El script jQuery lo que hace es seleccionar todos los LI y darles un eventListener, es decir, que cada vez que ocurra un evento (en este caso un click) se ejecute la función.

Quizá con
Código Javascript:
Ver original
  1. $("li").click(function () {
  2.     $("li .hover").removeClass("hover");
  3.     $(this).addClass("hover");
  4. });
  #9 (permalink)  
Antiguo 01/09/2012, 15:44
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

Justo, el JavaScript en un archivo a parte y en el HEAD después del archivo del jQuery.
  #10 (permalink)  
Antiguo 01/09/2012, 15:50
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Cita:
Iniciado por soyuncreeper Ver Mensaje
El script jQuery lo que hace es seleccionar todos los LI y darles un eventListener, es decir, que cada vez que ocurra un evento (en este caso un click) se ejecute la función.

Quizá con
Código Javascript:
Ver original
  1. $("li").click(function () {
  2.     $("li .hover").removeClass("hover");
  3.     $(this).addClass("hover");
  4. });
Ok, pero no se tendría que ser más específico? en la hoja de estilos tengo diferentes hover
  #11 (permalink)  
Antiguo 01/09/2012, 15:51
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Cita:
Iniciado por soyuncreeper Ver Mensaje
Justo, el JavaScript en un archivo a parte y en el HEAD después del archivo del jQuery.
Gracias,

se pone tal cual fuera un javascript no?:



<head>
<script type="text/javascript" src="javascript.js"></script>
</head>
  #12 (permalink)  
Antiguo 01/09/2012, 15:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

Código Javascript:
Ver original
  1. $(".submenu_links li").click(function () {
  2.   $(".submenu_links li .hover").removeClass("hover");
  3.   $(this).addClass("hover");
  4. });
  #13 (permalink)  
Antiguo 01/09/2012, 15:58
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

Si puedes abrir la consola del navegador y ver si da algún error, mejor.
  #14 (permalink)  
Antiguo 01/09/2012, 16:02
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Creo que ya sé q pasa.

En el documento tengo que escribir esto?

<head>
<script src="jquery-v1.8.1.js" type="text/javascript"></script>
<script type="text/javascript" src="javascript.js"></script>
</head>


Y se supone que me tengo que descargar primero el archivo de jquery, no?
  #15 (permalink)  
Antiguo 01/09/2012, 16:03
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

El código está bien así, pero debes tener ese jquery-v1.8.1.js en el servidor, por supuesto.

De todas formas, mira a ver si te sale algún error en consola.
  #16 (permalink)  
Antiguo 01/09/2012, 16:16
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

No hay ningún error en la consola.

No sé por donde tirar...

Muchas gracias igualmente por todas las respuestas
  #17 (permalink)  
Antiguo 01/09/2012, 16:19
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

Igual funciona así...

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.   $(".submenu_links li").click(function () {
  3.     $(".submenu_links li .hover").removeClass("hover");
  4.     $(this).addClass("hover");
  5.   });
  6. });
  #18 (permalink)  
Antiguo 01/09/2012, 16:23
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Sigue sin funcionar pero no acabo de entender muy bien la función:

Cuando le dices removeClass("hover") no tendría que decírselo a todo el selector que uso en CSS:
removeClass(".submenu_links li:hover") ?

Igual para el addClass
  #19 (permalink)  
Antiguo 01/09/2012, 16:25
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

No, a removeClass se pasa la clase a borrar como String.

Por ejemplo, si quieres quitar la clase fool a un <div id="mydiv"></div> usas:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.   $("#mydiv").removeClass("fool");
  3. });
  #20 (permalink)  
Antiguo 01/09/2012, 16:28
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Cita:
Iniciado por soyuncreeper Ver Mensaje
No, a removeClass se pasa la clase a borrar como String.

Por ejemplo, si quieres quitar la clase fool a un <div id="mydiv"></div> usas:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.   $("#mydiv").removeClass("fool");
  3. });


Pero hover es un pseudoselector no una clase, no lo acabo de entender
  #21 (permalink)  
Antiguo 01/09/2012, 16:32
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

Aquí estamos usando hover como clase, por lo que en tu css tendrás que crear una clase llamada así, que creo que es lo que ha estado fallando todo el rato.

Código CSS:
Ver original
  1. .submenu_links li:hover
  2. {
  3. font-weight: bold;
  4. background: url("flechita_links.gif") right no-repeat;
  5. color: #15A567;
  6. padding-right: 15px; }
  7.  
  8. .hover
  9. {
  10. font-weight: bold;
  11. background: url("flechita_links.gif") right no-repeat;
  12. color: #15A567;
  13. padding-right: 15px; }
  #22 (permalink)  
Antiguo 01/09/2012, 16:33
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

O mejor aún:

Código CSS:
Ver original
  1. .submenu_links li:hover, .hover
  2. {
  3. font-weight: bold;
  4. background: url("flechita_links.gif") right no-repeat;
  5. color: #15A567;
  6. padding-right: 15px; }
  #23 (permalink)  
Antiguo 01/09/2012, 16:36
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Ueeeeee!!

Empieza a funcionar pero me da este error: ReferenceError: $ is not defined
[Parar en este error]

$(document).ready(function(){
  #24 (permalink)  
Antiguo 01/09/2012, 16:38
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Muchas gracias por todo mañana sigo más que llevo todo el día dándole a esto y me voy a la cama que aquí en España son las 00.30

Muchísimas gracias!
  #25 (permalink)  
Antiguo 01/09/2012, 16:40
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

Yo también soy de España xD

Si $ is not defined es porque hay algo mal al importar el jQuery, seguramente.
  #26 (permalink)  
Antiguo 01/09/2012, 16:47
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Último escrito jejeje: me lo he bajado de la pagina de esta pagina http://jquery.com/, la versión de desarrollo pero no me ha descargado nada me salido una nueva ventana con todo el código escrito. Lo he copiado, lo he pegado y lo he guardado con el mismo nombre que tiene y lo tengo guardado en la misma carpeta donde tengo todos los documentos ya que de momento sólo trabajo en local.

Adiós!!!

Y muchísimas gracias!!!!
  #27 (permalink)  
Antiguo 02/09/2012, 00:11
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Bueno, de momento empieza a funcionar. El código que hace que al menos haga algo es el siguiente:
Código:
javascript
<style type=$(document).ready(function()
{
  $(".submenu_links li a").click(function ()
  {
    $(".submenu_links li a .hover").removeClass("hover");
    $(this).addClass("hover");
  });
});
Código:
HTML
<ul class="submenu_links">
	<li><a style='cursor: pointer;' value="PrimerCicle" onClick="PrimerCicle();">Primer Cicle d’Educació Infantil (0/3 anys)</a></li>
	<li><a style='cursor: pointer;' value="Assesorament" onClick="Assesorament();">Assessorament Pedagògic</a></li>
	<li><a style='cursor: pointer;' value="ServeiMenjador" onClick="ServeiMenjador();">Servei de Menjador amb cuina casolana</a></li>
	<li><a style='cursor: pointer;' value="BonoEscolar" onClick="BonoEscolar();">Bono escolar</a></li>
	<li><a style='cursor: pointer;' value="EspaisFamiliars" onClick="EspaisFamiliars();">Espais familiars per infants matriculats</a></li>
	<li><a style='cursor: pointer;' value="AlletamentMatern" onClick="AlletamentMatern();">Programa d’alletament matern</a></li>
	<li><a style='cursor: pointer;' value="TallerMassatges" onClick="TallerMassatges();">Tallers de massatges</a></li>
	<li><a style='cursor: pointer;' value="EscolaEstiu" onClick="EscolaEstiu();">Escola d’estiu</a></li>
</ul>
Código:
CSS
.submenu_links li a:hover, .submenu_links li a:active, .hover {
font-weight: bold;
background: url("flechita_links.gif")  right no-repeat;
color: #15A567;
padding-right: 15px;
}
Lo que hace es que cuando clicas encima se queda sólo la imagen de la flechita de fondo, no se queda en bold y además cuando clicas encima de otro "li", el anterior no se desactiva

Alguna idea?
  #28 (permalink)  
Antiguo 02/09/2012, 06:26
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

No sé, prueba esto.

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.   $(".submenu_links li a").click(function () {
  3.     $(".submenu_links li a").removeClass("hover");
  4.     $(this).addClass("hover");
  5.   });
  6. });
  #29 (permalink)  
Antiguo 02/09/2012, 07:38
Avatar de annamon  
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Modificar estilo con javascript

Eureka!!!!!!!

Muchísimas gracias funciona!!!!
  #30 (permalink)  
Antiguo 02/09/2012, 07:41
 
Fecha de Ingreso: agosto-2012
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Modificar estilo con javascript

Menos mal, empezaba a quedarme sin ideas xD

Etiquetas: estilo, javascript, modificar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:15.