2012-02-20 45 views
7

Làm thế nào để tôi nhận được văn bản "có" mà đưa ra sau khi một thẻ trong một tài liệu html:DOM/javascript: có được văn bản sau khi thẻ

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

Tôi thấy rằng có một cách để làm điều đó với xpath:

Get text from next tag

nhưng tôi không sử dụng xpath và đang hy vọng không phải để bắt đầu chỉ cho việc này. Tôi nhận ra rằng tôi có thể nhận được tất cả các văn bản bên trong thẻ p, nhưng tôi muốn nhận được chỉ là "có" văn bản, cũng như biết mối quan hệ của nó với p và một thẻ. Nó không có vẻ là con của ai cả. (Bạn có thể giả định rằng tôi có thể nhận được bất kỳ phần tử/nút nào khác để nó có thể liên quan đến các phần tử đó.) Mỗi ​​hướng dẫn DOM dường như bỏ qua thực tế rằng văn bản có thể xảy ra bên ngoài các thẻ.

Cảm ơn.

+0

Các câu hỏi mà bạn có liên quan đến là sử dụng PHP - bạn đang sử dụng PHP? hay chỉ là JavaScript? – ManseUK

+0

chỉ cần javascript. Vì vậy, một lý do khác mà câu trả lời sẽ không hoạt động! – user984003

Trả lời

7

Thứ gì đó như this?

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

có, nó thực sự là đơn giản :) "có" là một đứa trẻ của P. Đối với một số lý do mà không làm việc cho tôi. Cảm ơn. – user984003

5

sử dụng này .. http://jsfiddle.net/2Dxy4/

Đây là HTML -

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

Trong JS của bạn

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

hoặc

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

Bạn cần phải đầu tiên nhận được innerHTML một thuộc tính sau đó lấy tổng innerHTML với việc sử dụng substring bạn có thể có một phần có của bạn ..

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

Vâng, nếu bạn sử dụng jQuery có một cách lén lút để có được điều này

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

Các vấn đề liên quan