Foros del Web » Programando para Internet » Javascript »

Cambiar clase a ítem de menu

Estas en el tema de Cambiar clase a ítem de menu en el foro de Javascript en Foros del Web. Buenas de nuevo, Hace poco pregunte como se llamaba la técnica de smooth scrolling (que en ese momento ni sabia que se llamaba asi xD), ...
  #1 (permalink)  
Antiguo 06/03/2013, 20:15
Avatar de Mariano_Floyd  
Fecha de Ingreso: marzo-2013
Ubicación: Córdoba
Mensajes: 155
Antigüedad: 11 años, 2 meses
Puntos: 14
Cambiar clase a ítem de menu

Buenas de nuevo, Hace poco pregunte como se llamaba la técnica de smooth scrolling (que en ese momento ni sabia que se llamaba asi xD), después de leer bastante sobre el tema, logre realizarlo, pero me surgió otro inconveniente que no soy capas de resolver. He puesto anclas en diferentes partes de la web para llevar a cabo el efecto anteriormente nombrado, pero no se como hacer para que el ítem del menú correspondiente a una sección de la web cambie de estilo (cambiarle el color básicamente). Es decir, que si los botones son negros, al hacer click en cualquiera de ellos, no solo me lleve a otra sección, sino también que cambie de color a modo de diferenciarlo como activo. Leí que se podía hacer con js, creando una clase en css y luego asignársela con js, pero sinceramente no se mucho de dicho lenguaje, agradecería enormemente si pudieran darme una mano con el tema. Desde ya, les agradezco.
Saludos.
  #2 (permalink)  
Antiguo 07/03/2013, 08:10
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cambiar clase a ítem de menu

si comprendes este código, lo harás
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
.activo {color:#FF0000;}
.inactivo {color:#000000;}
</style>
<script type="text/javascript">
window.onload = function() {
divs = document.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {
divs[i].onclick = function() {
for (var j = 0; j < divs.length; j++) {
divs[j].className = (this.id == divs[j].id) ? 'activo' : 'inactivo';
}
}
}
}
</script>
<head>
</head>
<body>
<div id="menu1" class="inactivo">menu</div>
<div id="menu2" class="inactivo">menu</div>
<div id="menu3" class="inactivo">menu</div>
<div id="menu4" class="inactivo">menu</div>
</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 07/03/2013, 08:23
Avatar de Mariano_Floyd  
Fecha de Ingreso: marzo-2013
Ubicación: Córdoba
Mensajes: 155
Antigüedad: 11 años, 2 meses
Puntos: 14
Respuesta: Cambiar clase a ítem de menu

Antes que nada, gracias por tomarte el tiempo para responder. Al código lo entiendo un poco, ahora me surge una duda, yo al menú lo tengo armado con una lista desordenada <ul> dentro de una etiqueta <nav>. Debería reemplazar los "divs" del script por "ul"?
  #4 (permalink)  
Antiguo 07/03/2013, 08:52
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Cambiar clase a ítem de menu

Cita:
Iniciado por Mariano_Floyd Ver Mensaje
Antes que nada, gracias por tomarte el tiempo para responder. Al código lo entiendo un poco, ahora me surge una duda, yo al menú lo tengo armado con una lista desordenada <ul> dentro de una etiqueta <nav>. Debería reemplazar los "divs" del script por "ul"?
no, debes reemplazar
divs = document.getElementsByTagName('div');
por la etiqueta a la que le apliques el cambio de clase

divs = document.getElementsByTagName('li'); por ejemplo
ó quizás hayas hecho esto
<li><a href="#" class="inactivo">item</a></li>
por lo que habría que aplicarlo a los <a>, todo depende de la estructura de tu menu
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: css, diseño-web, html
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 00:46.