Foros del Web » Programando para Internet » Javascript »

prototype con elementos del DOM

Estas en el tema de prototype con elementos del DOM en el foro de Javascript en Foros del Web. Hola qué tal: Si tengo este sencillo código: Código PHP: <! DOCTYPE HTML  PUBLIC  "-//W3C//DTD HTML 4.0 Transitional//EN" > < html > < head > < title ></ title ...
  #1 (permalink)  
Antiguo 15/04/2007, 17:57
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
prototype con elementos del DOM

Hola qué tal:

Si tengo este sencillo código:
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
html>
<
head>
<
title></title>
<
meta name="Author" content="derkeNuke">
</
head>

<
body>

<
p>Contenido del párrafo</p>

<
script>

var 
cuerpo=document.body;
var 
parrafo=cuerpo.childNodes[0];
while( 
parrafo.nodeType!=|| parrafo.tagName.toLowerCase()!="p") {
    
parrafo=parrafo.nextSibling;
}
document.write(parrafo);


</script>

</body>
</html> 
Lo que hace es encontrar la etiqueta <BODY> y almacenarla en cuerpo, para luego recorrer todos sus hijos hasta encontrarnos con el primer elemento párrafo <P>.

Bueno, me gustaría crear una función para esto, algo así como encuentraElPrimero(que,donde). Esto no es dificil, de hecho es el código que está ahí con un par de argumentos en vez de las variables.

El caso es que me gustaria transformarlo a donde.encuentraElPrimero(que), es decir, hacer un prototype para un elemento (en este caso [object HTMLBodyElement]).


¿Se puede hacer ésto?
He intentado:
Código PHP:
Object.prototype.encuentraElPrimero=function(que) {
    var 
loQueBusco=this.childNodes[0];
    while( 
loQueBusco.nodeType!=|| loQueBusco.tagName.toLowerCase()!=que.toLowerCase() ) {
        
loQueBusco=loQueBusco.nextSibling;
    }
    return 
loQueBusco;

Y me lo hace bien, pero es para todo tipo de objetos, incluso los que no contienen la propiedad childNodes.



¿Existe la manera de hacer ésto bien?
__________________
- 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 15/04/2007, 23:09
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: prototype con elementos del DOM

Hola:

Bueno, recuerdo que en mozilla y creo que también en Opera se pueden definir atributos a tags determinados con prototype, por ejemplo:

HTMLParagraphElement.prototype.toString = function() {return "párrafo";}

y si no se redefine su método toString(), devuelven [object HTMLParagraphElement], pero explorer a todos los considera [Object], así que supongo que hay que discriminar en la misma función.

Voy a intentarlo y te cuento.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 16/04/2007, 08:09
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
Re: prototype con elementos del DOM

Sí, exacto, eso era lo que buscaba... pero para IE son todo [object] a secas, no hay diferencia entre lo uno y lo otro...

En fin, tendremos que hacer un apaño para IE...


Muchas gracias caricatos!

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.
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 22:57.