2012-02-20 52 views
7

¿Cómo consigo el texto "no" que viene después de una etiqueta en un documento HTML:DOM/Javascript: obtener el texto después de la etiqueta

<p><a>hello</a>there</p> 

veo que hay una manera de hacerlo con XPath:

Get text from next tag

pero no estoy usando XPath y estoy esperando no tener que empezar sólo para esto. Me doy cuenta de que puedo obtener TODO el texto dentro de la etiqueta p, pero quiero obtener solo el texto "allí", así como conocer su relación con las etiquetas p y a. No parece ser el hijo o hermano de nadie. (Puede suponer que puedo obtener cualquiera de los otros elementos/nodos para que pueda ser relativo a ellos). Todos los tutoriales de DOM parecen ignorar el hecho de que el texto puede ocurrir fuera de las etiquetas.

Gracias.

+0

La pregunta se ha vinculado a es usando PHP - ¿estás usando PHP? o solo JavaScript? – ManseUK

+0

solo javascript. ¡Otra razón por la que esa respuesta no funcionará! – user984003

Respuesta

7

¿Algo como this?

var p = document.getElementsByTagName("p")[0]; 
alert(p.childNodes[1].textContent) 
+0

sí, realmente es así de simple :) "there" es un hijo de P. Por alguna razón, eso no estaba funcionando para mí. Gracias. – user984003

5

uso de este .. http://jsfiddle.net/2Dxy4/

Este es el código HTML -

<p id="there"> 
    <a>hello</a> 
    there 
</p>​ 

En su JS

alert(document.getElementById("there").lastChild.textContent)​ 

o

alert(document.getElementById("there").childNodes[1].textContent)​ 
-1

Tienes que conseguir primero el innerHTML un atributo innerHTML luego tomar total, con el uso de la subcadena que puede tener su parte no ..

$(document).ready(function() { 
var getA=$("p >a").text(); 
var getA=getA.length; 
var takeTotal=$("p").text(); 
var result=takeTotal.substring(get); 
alert(result); 
}); 
0

Bueno, si utiliza jQuery hay una manera disimulada para que este

x = $("<p><a>hello</a>there</p>")
x.contents()[1]

Cuestiones relacionadas