Foros del Web » Programando para Internet » Javascript »

¿innerText solo funciona en IE?

Estas en el tema de ¿innerText solo funciona en IE? en el foro de Javascript en Foros del Web. Hola, estoy intentando acceder al contenido de unas celdas para obtener el valor numérico que tienen escrito. Con innerHTML funciona correctamente pero claro, si algun ...
  #1 (permalink)  
Antiguo 01/11/2005, 18:02
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 20 años, 1 mes
Puntos: 1
¿innerText solo funciona en IE?

Hola, estoy intentando acceder al contenido de unas celdas para obtener el valor numérico que tienen escrito.

Con innerHTML funciona correctamente pero claro, si algun dia ese contenido de la celda lo escribo formateado en negrita o alguna cosa parecida, innerHTML me devolverá: "<b>30</b>" por ejemplo.

He probado con innerText y si me devuelve solamente el texto escrito... pero solo funciona en Internet Explorer...

¿Existe alguna función parecida a innerText que sirva para otros navegadores?

Gracias!
  #2 (permalink)  
Antiguo 01/11/2005, 19:46
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 4 meses
Puntos: 4
textContent
__________________
Internet Explorer SuckS
Download FireFox
  #3 (permalink)  
Antiguo 02/11/2005, 06:06
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 20 años, 1 mes
Puntos: 1
Miles de gracias!
  #4 (permalink)  
Antiguo 03/11/2005, 06:10
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 20 años, 1 mes
Puntos: 1
mmm... textContent solo me funciona en Firefox... en IE y Opera me devuelve undefined....

Necesito algo que funcione en todos (si es posible)...

Voy a buscar algo mientras alguien me responde
  #5 (permalink)  
Antiguo 03/11/2005, 08:43
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 2 meses
Puntos: 381
No sé si exista algún equivalente estandard ... lo que sí se podría hacer una función que saque sólo los nodos de texto dentro de un elemento.

Hice un ejemplo sencillo pero muy limitado

Código:
<script type="text/javascript">
<!--
function textoInterno(ide){
	el = document.getElementById(ide)
	hi = el.childNodes
	l = hi.length
	texto = '';
	for(m=0; m<l; m++){
		if(hi[m].nodeType == 3){
			texto += hi[m].nodeValue
		}
		else{
			texto += hi[m].firstChild.nodeValue
		}
	}
	return texto
}
//-->
</script>
</head>

<body>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td id="pepe" onclick="alert(textoInterno('pepe'))"> hola <strong>que</strong> <em>tal</em> 
    </td>
    <td>&nbsp;</td>
  </tr>
 </table>
Pero sólo servirá para texto sin formato o texto con formato por medio de otro elemento. Osea, <strong>hola</strong> lo encontraría pero <strong><em>hola</em></strong> no lo encontraría.

Se podría hacer la función más completa pero ahora no tengo tiempo y además sin saber si no existe algo standard yá hecho sería trabajar al pedo
  #6 (permalink)  
Antiguo 03/11/2005, 10:03
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 20 años, 1 mes
Puntos: 1
Bueno... aunque no esté muy pulida la función almenos funciona en Firefox, IE y Opera (los que tengo instalados en Windows)

Cuando haya tiempo ya intentaré apañar la función para que funcione con més etiquetas (a no ser que alguien me ofrezca una buena solución)

Gracias tunait!
  #7 (permalink)  
Antiguo 03/11/2005, 10:15
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 2 meses
Puntos: 381
De nadas

si apañas la función para que saque todos los nodos texto de todos los niveles de nodos nos la dejas por aquí.

...o si alguien se anima, pues eso.

Cuando tenga un rato largo ociosa (y si me acuerdo) a ver si le doy más vueltas. En realidad creo que se podría hacer un prototype, sería muy util

Un saludo
  #8 (permalink)  
Antiguo 03/11/2005, 16:46
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 20 años, 2 meses
Puntos: 5
Hola a todos

Opera soporta innerText, al menos en la versión 8.5.

Saludos
  #9 (permalink)  
Antiguo 03/11/2005, 18:12
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
dos opciones mas:

Cita:
<html>
<head>
<script>
var retun="";
function veruno(vv){
comodin=/<(.*)>/;
v=vv.innerHTML;
contenido=v.replace(comodin,"");
alert(contenido);
}

function verdos(cc){
c=cc.innerHTML;
c=c.split("</");
for(x=0;x<c.length;x++){
ccc=c[x].lastIndexOf(">");
if(ccc!=-1 && ccc!=c[x].length-1){
retun+="("+c[x].slice(ccc+1)+")";
}
}
alert(retun);
retun="";
}

</script>
</head>
<span onclick="veruno(this)" ><b>50</b></span>
<span onclick="veruno(this)" ><b><u>34141241</u></b></span>
<span onclick="veruno(this)" ><b><i><strong>342325355</strong</i></b></span>
<br>
<span onclick="verdos(this)" ><b>50</b></span>
<span onclick="verdos(this)" ><b><u>34141241</u></b></span>
<span onclick="verdos(this)" ><b><i><strong>342325355</strong</i></b><b>333</b></span>

<body>
</body>
</html>
aunque la primera opcion , que utiliza Expresiones regulares, no se por que no funciona(sería la mejor). Segun los libros /<(.*)>/ debería reconoser todas las etiquetas html, pero no lo pude hacer handar.

saludos
__________________
by Capitán Buscapina
.
  #10 (permalink)  
Antiguo 03/11/2005, 19:00
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 20 años, 4 meses
Puntos: 4
me parece mas sencillo esto:

function inner_text(obj_id)
{
var o = document.getElementById(obj_id);
return o.innerHTML.replace(/<[^>]+>/gi, '');
}
__________________
Internet Explorer SuckS
Download FireFox
  #11 (permalink)  
Antiguo 04/11/2005, 07:04
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
ahora que SirCarajodida lo pone , funciona.

era /<[^>]+>/ en lugar de /<(.*)>/.
__________________
by Capitán Buscapina
.
  #12 (permalink)  
Antiguo 04/11/2005, 08:53
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 20 años, 1 mes
Puntos: 1
Genial!! Gracias a todos los que me habeis ayudado, os lo agradezco de verdad
  #13 (permalink)  
Antiguo 04/11/2005, 14:27
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Hola todos :

Iba a poner un enlace a

Resaltar palabra en una web

pero no sé si ahora es importante, el que sí pongo es

Expresiones regulares

Si no se me ofenden, le doy otra vuelta más al código

Código:
<html>
<head>
<script>
function veruno(htm){
comodin = /<[^>]+>/g ;
cadena = htm.innerHTML;
	alert(cadena)
cadena = cadena.replace(/(<br>)|(<br\s\x2F>)/gi , "\r\n");
	alert(cadena)
contenido = cadena.replace(comodin , "");
	alert(contenido);
}
</script>
</head>
<body ondblclick="veruno(this)">

<span onclick="veruno(this)" ><b>50</b></span>
<span onclick="veruno(this)" ><b><u>34141241</u></b></span>
<span onclick="veruno(this)" ><b><i><strong>342325355</strong</i></b></span>
<br>
----------------------
<br />
<span onclick="veruno(this)" >UNO <br> <i>DOS</i> <br /> TRES</span>
</body>
</html>
Aún está incompleto, pero explico la diferencia. El salto de línea es parte del texto, y en HTML se usa <br> o <br /> (en XHTML el último es obligatorio), que de alguna forma debe ser traducido a texto.
Hay más etiquetas a reemplazar (</p> ; </h1> ; ...) que contienen en sí un salto de línea; pero habría que discutir como las interpretamos antes de hacer el prototype final.
  #14 (permalink)  
Antiguo 04/11/2005, 16:35
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
a ver si entinedo.

furoya: lo que decis es que queres mantener el salto de linea despues de reemplazar las etiquetas <br><p><h1>...etc?

Las Expresiones regulares creo que contemplan este caso, aunque yo no lo se(es que son potentes pero bastantes complejas )
__________________
by Capitán Buscapina
.

Última edición por Cap.Buscapina; 04/11/2005 a las 17:11
  #15 (permalink)  
Antiguo 05/11/2005, 11:36
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Sí. De otra forma devuelve el texto todo de corrido. La idea es que pierda el HTML, pero no la estructura.

Me parece que en IE había una forma de saber si on objeto tenía layout, pero no vale la pena buscarla. Porque el código dejaría de ser compatible.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:07.