Foros del Web » Programando para Internet » Javascript »

en Opera no tiene efecto

Estas en el tema de en Opera no tiene efecto en el foro de Javascript en Foros del Web. El codigo es el siguiente: Código PHP: botones = document . getElementById ( "contenedorDeBotones" ). childNodes ; for( a = 0 ; a < botones ...
  #1 (permalink)  
Antiguo 19/06/2004, 16:24
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Pregunta en Opera no tiene efecto

El codigo es el siguiente:

Código PHP:
botones=document.getElementById("contenedorDeBotones").childNodes;
for(
a=0;a<botones.length;a++) {
    if(
botones[a].tagName=="DIV"botones[a].onclick=function() {
        
self.location.href=this.getAttributeNode("href").value;
    }

El codigo reune cada boton (capa div) que esta dentro de otra capa llamada "contenedorDeBotones". A cada boton se le aplica una funcion en el evento click, para que cambie la localizacion de la ventana actual con el valor del atributo "href" del mismo DIV.

Ahora bien, ¿Cual es el problema para que no funcione en Opera (7.5)?? ¿Cómo debo modificarlo?


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #2 (permalink)  
Antiguo 20/06/2004, 03:26
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, derkenuke.

No tengo instalado Opera para probarlo, pero se me ocurre que hagas algunas pruebas a ver si suena la flauta:

En lugar de: botones[a].onclick

botones[a]['onclick']

y en lugar de: this.getAttributeNode("href").value

this.getAttribute("href").value

Bueno, a ver si hay suerte. Saludos,
  #3 (permalink)  
Antiguo 20/06/2004, 03:45
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Otra cosilla.

Podrías poner la primer línea así:

botones=document.getElementById("contenedorDeBoton es").getElementsByTagName('div')

y te ahorrarías comprobar si el elemento es un div (if(botones[a].tagName=="DIV"))

Saludos,
  #4 (permalink)  
Antiguo 20/06/2004, 04:43
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola derkenuke (Hacía tiempo que no coincidíamos )

Como tengo Opera y un probador de script, y ayudado por los consejos de JavierB (¡Hola !)

Preparé una paginita que no creo que se parezca a la tuya pero creo que te puede ayudar:

Código:
<html>
	<head>
		<title>
			precarga de sonidos
		</title>
		<script type="text/javascript">
			function activar()	{
				botones=document.getElementById("contenedorDeBotones").getElementsByTagName("div"); 
				for(a=0;a<botones.length;a++) { 
					botones[a].onclick=function() { 
						alert(this.getAttribute("refe")); 
					} 
				} 
			}

		</script>
	</head>
	<body >
		<div id="contenedorDeBotones" > 
			<div refe="celtic0.mid">celtic0.mid</div>
			<div refe="celtic3.mid">celtic3.mid</div>
			<div refe="celtic4.mid">celtic4.mid</div>
		</div>
		<button onclick="activar()" >
			activar
		</button>
	</body>
</html>
Como verás, en vez de enlazar, la función que se crea saca un alert con el atributo "refe"... le cambié el nombre porque con href salía el popup con el mensaje "Warning", y supuse que href no se podía usar...

Otra cosa es que al poner getAttribute, no hace falta poner value (con getAttributeNode será igual)... el value y el name se usan con el array attributes... aunque acabo de probarlo y en Opera no funciona (explorer sí). Esta es la línea: alert(this.attributes["refe"].value);
Aunque si funciona poniendo el índice adecuado (en el ejemplo es 0, pero si hay más atributos hay que poner el orden adecuado o ponerle la condición que se corresponda con el name == "refe"...

Supongo que sabes de lo que hablo, pero como el tema lo estoy empezando a liar, lo voy a dejar así.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 20/06/2004, 08:17
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
gracias por los consejos!

Muchas gracias por todos los consejos, me ahorre una linea de codigo y tiempode ejecucion . Ademas tuve que cambiar el nombre del atributo, porque href no funcionaba (era para seguir mas la simbologia html ). Bueno el codigo definitivo me quedó asi:

Código PHP:
<script language="javascript">
    
botones=document.getElementById("contenedorDeBotones").getElementsByTagName("DIV");
    for(
a=0;a<botones.length;a++) {
        
botones[a].onclick=function() {
            
self.location.href=this.getAttribute("destino");
        }
    }
</script> 
Y funciona en IE, en NS y en Opera por fin!.


PD: Caricatos no nos leiamos desde hace tiempo porque no he posteado nada hace mucho tiempo, o estoy empezando a coger hiper-confianza o es que ya no hago locuras como antes en JS, sino programas para webs de verdad . [Aunque siempre quedan proyectos en el aire jeje]


Un saludo a todos
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 03:00.