Foros del Web » Programando para Internet » Javascript »

Problema con onlcik generado

Estas en el tema de Problema con onlcik generado en el foro de Javascript en Foros del Web. Hola buenos dias Tengo una pagina donde javascript añade el evento onclick, pero no se por que es ie no funciona y en firefox si.. ...
  #1 (permalink)  
Antiguo 14/02/2008, 02:35
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 2 meses
Puntos: 1
Problema con onlcik generado

Hola buenos dias

Tengo una pagina donde javascript añade el evento onclick, pero no se por que es ie no funciona y en firefox si..

Tiene puestas dos preguntas una para el que genera javascript que es el que no funciona y la primera que es la misma que la que genera pero cambiando el id del span..

os dejo el codigo
Código HTML:
<html>
<head>
</head>
<body>
<div id="preguntas_frecuentes">
<span id="19" onclick="javascript:muestra_respuesta('texto4')">¿Pregunta?.</SPAN><br><br><br>
<span id="4">¿Pregunta?.</span><br><br>
<div id="texto4" style="display:block">
 Respuesta<br><br>Respuesta<br><br>Respuesta<br><br>Respuesta<br><br>Respuesta<br><br>
  </div>

</div> <!-- Cierre Capa de Respuestas (Contenedora) -->
 <br />

<script language="javascript" type="text/javascript">
function muestra_respuesta(id){
	oculta_respuestas(id);
	var resp = document.getElementById(id)
	if(resp.style.display=="none"){
		resp.style.display="block";
	}
	else{
		resp.style.display="none";
	}
}

function oculta_respuestas(id){ // La id es del elemento a no ocultar
	var contenido = document.getElementById('preguntas_frecuentes');
	var objs = contenido.getElementsByTagName('div');
	for(i=0;i<objs.length;i++){
		if(objs[i].id.indexOf('texto')!=-1){
			var capa = document.getElementById(objs[i].id);
			if(capa.id!=id){
				capa.style.display="none";
			}
		}
	}
	
}

function anade_onclick(){
	var contenido = document.getElementById('preguntas_frecuentes');
	var objs = contenido.getElementsByTagName('div');
	for(i=0;i<objs.length;i++){
		if(objs[i].id.indexOf('texto')!=-1){
			var numero = objs[i].id.substring(5, objs[i].id.length);
			var span2 = document.getElementById(numero);
			span2.setAttribute("onclick", "javascript:muestra_respuesta('texto" + numero + "')");
		}
	}
}


anade_onclick();
oculta_respuestas();
</script>
</body>
</html> 
Un Saludo y Gracias por adelantado
  #2 (permalink)  
Antiguo 14/02/2008, 02:47
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Re: Problema con onlcik generado

Prueba asi:
Código:
var tmp="muestra_respuesta('texto' + numero + '')";
span2.onclick = "function () {"+tmp+"}";
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 18/02/2008, 01:47
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: Problema con onlcik generado

gracias ZiTAL por contestar

pero no se muy bien donde tengo que poner esas lineas, ya que me dice siempre que no esta declarado span2

un Saludo
  #4 (permalink)  
Antiguo 18/02/2008, 02:04
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Re: Problema con onlcik generado

Código:
			var span2 = document.getElementById(numero);
			span2.setAttribute("onclick", "javascript:muestra_respuesta('texto" + numero + "')");
cambialo por:

Código:
			var span2 = document.getElementById(numero);
			var tmp="muestra_respuesta('texto' + numero + '')";
			span2.onclick = "function () {"+tmp+"}";
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #5 (permalink)  
Antiguo 18/02/2008, 02:22
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Problema con onlcik generado

Hola:

Me parece que no se pueden poner solo números en los id (¿Has probado validar?)...

Acabo de probar esto en explorer y funciona:

Código:
span2.onclick = function() {muestra_respuesta('texto' + this.id)};
No es aconsejable poner variables como pusiste, porque esa variable del bucle luego se queda siempre con el mismo valor...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 18/02/2008, 03:19
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: Problema con onlcik generado

Gracias a los dos al final quedo asi y ya funciona

Código PHP:
<html>
<
HEAD></HEAD>
<
BODY>
<
DIV id=preguntas_frecuentes><SPAN id=19 onclick="javascript:muestra_respuesta('texto4')">¿Pregunta?.</SPAN><BR><BR><BR><SPAN id=4>¿Pregunta?.</SPAN><BR><BR>
<
DIV id=texto4 style="DISPLAY: block">Respuesta<BR><BR>Respuesta<BR><BR>Respuesta<BR><BR>Respuesta<BR><BR>Respuesta<BR><BR></DIV></DIV><!-- Cierre Capa de Respuestas (Contenedora) --><BR>
<
SCRIPT language=javascript type=text/javascript>
function 
muestra_respuesta(id){
    
oculta_respuestas(id);
    var 
resp document.getElementById(id)
    if(
resp.style.display=="none"){
        
resp.style.display="block";
    }
    else{
        
resp.style.display="none";
    }
}

function 
oculta_respuestas(id){ // La id es del elemento a no ocultar
    
var contenido document.getElementById('preguntas_frecuentes');
    var 
objs contenido.getElementsByTagName('div');
    for(
i=0;i<objs.length;i++){
        if(
objs[i].id.indexOf('texto')!=-1){
            var 
capa document.getElementById(objs[i].id);
            if(
capa.id!=id){
                
capa.style.display="none";
            }
        }
    }
    
}

function 
anade_onclick(){
    var 
contenido document.getElementById('preguntas_frecuentes');
    var 
objs contenido.getElementsByTagName('div');
    for(
i=0;i<objs.length;i++){
        if(
objs[i].id.indexOf('texto')!=-1){
            var 
numero objs[i].id.substring(5objs[i].id.length);
            var 
span2 document.getElementById(numero);
            
span2.onclick = function() {muestra_respuesta('texto' this.id)};
            
        }
    }
}



anade_onclick();
oculta_respuestas();
</SCRIPT>
</BODY><html> 
Un Saludo y de nuevo gracias
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 23:10.