Foros del Web » Programando para Internet » Javascript »

Error usando el método replace

Estas en el tema de Error usando el método replace en el foro de Javascript en Foros del Web. Hola, estoy haciendo una búsqueda de un texto en una tabla, usando para ello: Código PHP: objTabla . prototype . objBuscar =function  objBuscar ( texto ...
  #1 (permalink)  
Antiguo 05/02/2007, 05:30
Avatar de crcbad  
Fecha de Ingreso: enero-2005
Mensajes: 302
Antigüedad: 19 años, 3 meses
Puntos: 0
Error usando el método replace

Hola, estoy haciendo una búsqueda de un texto en una tabla, usando para ello:

Código PHP:
objTabla.prototype.objBuscar=function objBuscar(textoobjeto)
{  
  
expReg "/\\b"+texto+"\\b/g";
  
objeto.innerHTML objeto.innerHTML.replace(eval(expReg), '<font color="#990000">'+texto+'</font>');
}; 
Donde "texto" es el texto a buscar, y objeto, tiene, en mi caso, toda una tabla entera. Cuando ejecuto el código, el siguiente error me aparece:

"Error desconocido en tiempo de ejecución".

Alguién puede decirme lo que puede estar ocurriendo o como arreglarlo?

Un saludo.
__________________

:cool: [ http://eruben.sytes.net ] :cool:


Las dos frases que te ayudarán a salir adelante:
  • No hay mujer fea, solo copas de menos. :borracho:
  • Ante la duda, siempre coge la más tetuda. :arriba:
  #2 (permalink)  
Antiguo 05/02/2007, 07:04
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: Error usando el método replace

El prototype sólo sirve para objetos de javascript definidos (creo, corregidme si me equivoco). Así que tendrás que definir tu objTabla (que no nos lo has puesto) y meter dentro de su definición ese método.

He creado un objTabla a mi gusto con las filas y columnas pasadas por argumento, y el contenido de las celdas son palabras del lorem ipsum.

Luego buscamos dentro de la tabla la palabra "ipsum" para marcarla de rojo:

Código PHP:
<script>

var 
palabras="Lorem ipsum dolor sit amet consectetuer adipiscing elit Ut ligula mi iaculis ut pharetra tempus";
palabras=palabras.toLowerCase().split(" ");

function 
palabraAlAzar() {
    return 
palabrasMath.round(Math.random()*palabras.length) ];
}


function 
objTabla(filas,columnas) {
    var 
t=document.createElement("TABLE");
    
t.setAttribute("border","1");
    for(var 
fila=1fila<=filasfila++) {
        var 
fil=document.createElement("TR");
        for(var 
col=1col<=columnascol++) {
            var 
colum=document.createElement("TD");
            
colum.appendChilddocument.createTextNodepalabraAlAzar() ) );
            
fil.appendChild(colum);
        }
        
t.appendChild(fil);
    }
    
document.body.appendChild(t);

    
t.marcar=function(texto){
        var 
expReg = new RegExptexto "g" );
        
this.innerHTML this.innerHTML.replaceexpReg'<font color="#990000">'+texto+'</font>');
    }

    return 
t;
}

</script>

<script>
var t=new objTabla(5,10);
t.marcar("ipsum");
</script> 
Fíjate en la correcta manera de implementar las funciones regulares, con la funcion RegExp. Puedes añadirle los \b, que se los he quitado. Además cuando trabajas con métodos lo que tienes que hacer es no pasar el objeto por argumento, el objeto es this, directamente.


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 07:27.