Foros del Web » Programando para Internet » Javascript »

Hacer que menu corra varias veces

Estas en el tema de Hacer que menu corra varias veces en el foro de Javascript en Foros del Web. hola tengo un problema he implementado un menu; que deberia ejecutarse para cada campo que imprime; pero se activa para un solo campo; que podria ...
  #1 (permalink)  
Antiguo 29/08/2012, 02:25
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Pregunta Hacer que menu corra varias veces

hola tengo un problema he implementado un menu; que deberia ejecutarse para cada campo que imprime; pero se activa para un solo campo; que podria hacer
Código HTML:
<br />
<table style="width:400px;border:3">
<?php 
	$columnaActual=0;
	$columnasTotales=4;
	foreach($listadoCursoAsig as $objCursoAsig)
	{
	$columnaActual++;
	if($columnaActual==1) { echo "<tr>"; } echo "
		<td>
			<ul class='menus' id='menu'>
				<li>
					<a href='#' class='menuslink'>".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getCurso()."</a>
					<ul>
						<li>
							<a href='../Tema' class='subs'>Gestionar Temas</a>
							<ul>
								<li>
									<a href='../TemaxCurso'>Gestionar Tema por Curso</a>
								</li>
								<li>
									<a href='../Subtema'>Gestionar Subtemas</a>
								</li>
								<li>
									<a href='../Leccion'>Gestionar Leccion</a>
								</li>
								<li>
									<a href='../LeccionxNivel'>Gestionar Leccion por Nivel</a>
								</li>
							</ul>
						</li>
						<li>
							<a href='../Banco' class='subs'>Gestionar Banco</a>
							<ul>
								<li>
									<a href='../Pregunta'>Gestionar Preguntas</a>
								</li>
								<li>
									<a href='../Examen'>Gestionar Examen</a>
								</li>
								<li>
									<a href='../PreguntaxExamen'>Gestionar Preguntas x Examen</a>
								</li>
							</ul>
						</li>
						<li>
							<a href='../TipoAyuda'>Gestionar Tipo de Ayuda</a>
						</li>
						<li>
							<a href='../Ayudaxleccion'>Gestionar Ayudan x Leccion(Subir Archivos)</a>
						</li>
						<li>
							<a href='../TipoSolucion'>Gestionar Tipo de Solucion</a>
						</li>
					</ul>
				</li>
			</ul>
		</td>";
	if($columnaActual==$columnasTotales) { echo "</tr>"; $columnaActual=0;}
	}
	?>
</table>
<script type="text/javascript">
	var menu=new menu.dd("menu");
	menu.init("menu","menuhover");
</script> 
  #2 (permalink)  
Antiguo 29/08/2012, 02:36
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Hacer que menu corra varias veces

Así sin ver la librería que usas para correr el menu, veo que estás usando ID's iguales. Por esto solo funciona uno. Prueba esto:

Código PHP:
Ver original
  1. <ul class='menus' id='menu<?php echo $columnaActual; ?>'>

Y los JavaScript:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     var menu=new menu.dd("menu0");
  3.     menu.init("menu0","menuhover");
  4. </script>
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     var menu=new menu.dd("menu1");
  3.     menu.init("menu1","menuhover");
  4. </script>

etc.

Un saludo!
  #3 (permalink)  
Antiguo 29/08/2012, 02:59
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Sonrisa Respuesta: Hacer que menu corra varias veces

Cita:
Iniciado por 3nr1c Ver Mensaje
Así sin ver la librería que usas para correr el menu, veo que estás usando ID's iguales. Por esto solo funciona uno. Prueba esto:

Código PHP:
Ver original
  1. <ul class='menus' id='menu<?php echo $columnaActual; ?>'>

Y los JavaScript:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     var menu=new menu.dd("menu0");
  3.     menu.init("menu0","menuhover");
  4. </script>
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     var menu=new menu.dd("menu1");
  3.     menu.init("menu1","menuhover");
  4. </script>

etc.

Un saludo!
tengo una duda; los campos que se imprimen son de BD; por lo tanto en esta ocasion son solo 2 registros; q pasa si en algun momento llegan a ser 50 registros; tendria que poner 50 javascript citando a cada menu?

gracias x la pronta respuesta
  #4 (permalink)  
Antiguo 29/08/2012, 03:05
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Hacer que menu corra varias veces

En este caso podrías tener una función JS con un bucle for que inicializara todos los menus. Para saber cuantos hay, usas PHP:

Código Javascript:
Ver original
  1. (function(){
  2.   for( i=0;i<<?php echo count($listadoCursoAsig); ?>;i++ ){
  3.     var menu = menu.dd("menu"+i);
  4.     menu.init("menu"+i,"menuhover");
  5.   }
  6. })();

Por cierto... Te ha funcionado antes? Un saludo
  #5 (permalink)  
Antiguo 29/08/2012, 03:13
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Hacer que menu corra varias veces

si funcionan normal; pero ahora ya no anda; x cierto menu me llamaba a una funcion antes declara en un fichero js.
Cita:
var menu=function(){
var t=15,z=50,s=6,a;
function dd(n){this.n=n; this.h=[]; this.c=[]}
dd.prototype.init=function(p,c){
a=c; var w=document.getElementById(p), s=w.getElementsByTagName('ul'), l=s.length, i=0;
for(i;i<l;i++){
var h=s[i].parentNode; this.h[i]=h; this.c[i]=s[i];
h.onmouseover=new Function(this.n+'.st('+i+',true)');
h.onmouseout=new Function(this.n+'.st('+i+')');
}
}
dd.prototype.st=function(x,f){
var c=this.c[x], h=this.h[x], p=h.getElementsByTagName('a')[0];
clearInterval(c.t); c.style.overflow='hidden';
if(f){
p.className+=' '+a;
if(!c.mh){c.style.display='block'; c.style.height=''; c.mh=c.offsetHeight; c.style.height=0}
if(c.mh==c.offsetHeight){c.style.overflow='visible '}
else{c.style.zIndex=z; z++; c.t=setInterval(function(){sl(c,1)},t)}
}else{p.className=p.className.replace(a,''); c.t=setInterval(function(){sl(c,-1)},t)}
}
function sl(c,f){
var h=c.offsetHeight;
if((h<=0&&f!=1)||(h>=c.mh&&f==1)){
if(f==1){c.style.filter=''; c.style.opacity=1; c.style.overflow='visible'}
clearInterval(c.t); return
}
var d=(f==1)?Math.ceil((c.mh-h)/s):Math.ceil(h/s), o=h/c.mh;
c.style.opacity=o; c.style.filter='alpha(opacity='+(o*100)+')';
c.style.height=h+(d*f)+'px'
}
return{dd:dd}
}();
pero al modificar el codigo ya no ejecuta, tampoco el 1ero
el codigo ya modificado quedaria asi; pero no corre; esto es en el fichero php; luego llama al fichero js antes mencionado
Cita:
<table style="width:400px;border:3">
<?php
$columnaActual=0;
$columnasTotales=4;
foreach($listadoCursoAsig as $objCursoAsig)
{
$columnaActual++;
if($columnaActual==1) { echo "<tr>"; } echo "
<td>
<ul class='menus' id='menu".$columnaActual."'>
<li>
<a href='#' class='menuslink'>".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getCurso()."</a>
<ul>
<li>
<a href='../Tema&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."' class='subs'>Gestionar Temas</a>
<ul>
<li>
<a href='../TemaxCurso&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."'>Gestionar Tema por Curso</a>
</li>
<li>
<a href='../Subtema&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."'>Gestionar Subtemas</a>
</li>
<li>
<a href='../Leccion&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."'>Gestionar Leccion</a>
</li>
<li>
<a href='../LeccionxNivel&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."'>Gestionar Leccion por Nivel</a>
</li>
</ul>
</li>
<li>
<a href='../Banco&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."' class='subs'>Gestionar Banco</a>
<ul>
<li>
<a href='../Pregunta&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."'>Gestionar Preguntas</a>
</li>
<li>
<a href='../Examen&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."'>Gestionar Examen</a>
</li>
<li>
<a href='../PreguntaxExamen&idCurso=".$objCursoAsig->getObjCursoxEscuela()->getObjCurso()->getIdCurso()."'>Gestionar Preguntas x Examen</a>
</li>
</ul>
</li>
<li>
<a href='../TipoAyuda'>Gestionar Tipo de Ayuda</a>
</li>
<li>
<a href='../Ayudaxleccion'>Gestionar Ayudan x Leccion(Subir Archivos)</a>
</li>
<li>
<a href='../TipoSolucion'>Gestionar Tipo de Solucion</a>
</li>
</ul>
</li>
</ul>
</td>";
if($columnaActual==$columnasTotales) { echo "</tr>"; $columnaActual=0;}
}
?>
</table>
<script type="text/javascript">
function numero(){
for( i=0;i<<?php echo count($listadoCursoAsig); ?>;i++ ){
var menu = menu.dd("menu"+i);
menu.init("menu"+i,"menuhover");
}
}();
//var menu=new menu.dd("menu0");
//menu.init("menu0","menuhover");
</script>
gracias x la ayuda
  #6 (permalink)  
Antiguo 29/08/2012, 19:40
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Hacer que menu corra varias veces

no he podido solucionar el problema; algun tipo de solucion gracias
  #7 (permalink)  
Antiguo 30/08/2012, 03:05
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 13 años
Puntos: 5
Respuesta: Hacer que menu corra varias veces

Puede que sea por esto (creo, lo he visto solo por encima):

Código Javascript:
Ver original
  1. var menu = new menu.dd("menu"+i);

Saludos.
  #8 (permalink)  
Antiguo 03/09/2012, 07:31
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Hacer que menu corra varias veces

Cita:
Iniciado por jarios Ver Mensaje
Puede que sea por esto (creo, lo he visto solo por encima):

Código Javascript:
Ver original
  1. var menu = new menu.dd("menu"+i);

Saludos.
no entiendo; no se supone que las variables en javascript son new menu; y el contador va simple no con $i?

Etiquetas: php, veces
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:22.