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.