Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/05/2008, 00:42
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Misterios del DOM

El "misterio" es bastante simple y no tiene que ver con el DOM.

El problema es este:

Código:
function saludar(mensaje) {
    alert(mensaje);
    saludar = 7;
}
saludar("hola");
saludar("hola");
Si pruebas ese código verás que la primera llamada funciona y la segunda se queja de que saludar no es una función. ¿Por qué? Porque dentro hemos asignado otra cosa distinta a saludar.

En tu código ocurre lo mismo:
Código:
 function pq() {
    //...
    pq = document.getElementById("pq");
    //...
}
Soluciones:
  • No usar los mismos nombres para cosas distintas
  • Cuando quieras usar una variable local, declárala como variable local (var pq = ...)
  • Limpia tu código más, porque en este caso ni siquiera es necesaria esa variable. El elemento pq ya se lo estás pasando a la función al llamarla con pq(this):
    Código:
    function pq(elemento) {
        //...
        if(navigator.appName != "Microsoft Internet Explorer"){
            elemento.style.color = '#FF3300';
        }
        //...
    }
    
  • Limpia tu código más aún. No necesitas 4 funciones distintas cuando las cuatro hacen lo mismo. Parametriza lo que sea distinto y usa una única función.