2011-10-12 31 views
6

Tôi cần tìm trên trang HTML tất cả các đoạn văn bản phù hợp với cụm từ thông dụng cụ thể (nghĩa là, tôi cần bỏ qua thẻ sao cho '< span>First name: < /span>< br/>< b>John< /b>' sẽ khớp với 'First name: John'). trang trí với các yếu tố mới và áp dụng phong cách css tùy chỉnh) và có thể xác định vị trí các mảnh, ví dụ có thể cuộn chúng vào chế độ xem. Chức năng tương tự như plugin trình duyệt Skype đang thực hiện với số điện thoại được tìm thấy trên trang.Tìm phần tử DOM chứa chuỗi phù hợp với cụm từ thông dụng

+7

Bạn có mã không hoạt động không, hoặc đây có phải là câu hỏi "cho tôi teh codez" không? Bạn đã thử cái gì? – CanSpice

+0

Tôi cần tìm cách tiếp cận, tôi có thể viết mã. Nếu giải mã của nó đã có và mã có sẵn - thậm chí tốt hơn. –

+0

Dường như jQuery có thể làm điều này với: bộ chọn contains(). có thể logic của nó có thể được định nghĩa lại để sử dụng tìm kiếm regexp thay vì tìm kiếm chuỗi con. –

Trả lời

-1

Bạn đã thử một cái gì đó như thế này?

document.body.innerHTML.replace(/<\/?[^>]+>/g, '')

+1

Điều đó sẽ không chỉ phá hủy mọi người nghe đã được thêm động, có khả năng sẽ làm hỏng các phần tử, thuộc tính và thuộc tính theo các cách khác nhau trong các trình duyệt khác nhau cho bất kỳ trang nào có nội dung không tầm thường. – RobG

+0

Tôi cần giữ thông tin về vị trí trong DOM kết quả tìm kiếm của tôi được đặt, hoặc tôi có thể làm document.body.innerText.match() - không phải những gì tôi cần. –

2

Bạn có thể đi bộ xuống một cách đệ quy DOM nhìn vào textContent hoặc innerText tài sản (nếu phù hợp) của các nguyên tố, hoặc bạn có thể sử dụng vòng lặp trong bộ sưu tập được trả về bởi getElementsByTagName. Dù bằng cách nào, khi bạn đã xác định được văn bản và phần tử gốc, bạn cần tìm cách thay thế nó.

Yêu cầu của bạn đối với cấu trúc tài liệu là gì thay thế nếu chuỗi được chia thành một hoặc nhiều phần tử khác?

+0

Tôi cho rằng việc sử dụng phương pháp tập trung vào nút so với cách tiếp cận tập trung vào chuỗi sẽ mang lại nhiều tính di động hơn. Bên cạnh đó, đó là khía cạnh của DOM hầu hết mọi người gặp rắc rối với :). –

+0

Có, nhưng OP muốn chuỗi ngay cả khi nó được chia thành nhiều phần tử, vì vậy, chỉ cần nhìn vào các nút văn bản sẽ không thực hiện được công việc. Tôi không biết làm thế nào ông có ý định đối phó với các chuỗi phân chia, nhưng ít nhất là phương pháp trên sẽ tìm thấy tổ tiên gần nhất có toàn bộ chuỗi. – RobG

2

Bạn có thể sử dụng jQuery selectors để có được những <b> thẻ chứa John mà đến sau khi một thẻ <span> chứa First name:, và sau đó ví dụ như áp dụng một phong cách:

$("span:contains('First name:') ~ b:contains('John')").css('color','red'); 

Dưới đây là một ví dụ chạy: http://jsfiddle.net/XzwNj/

+0

Đó chỉ là một ví dụ, không phải trường hợp cụ thể –

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