2011-10-12 2 views
6

특정 정규 표현식과 일치하는 모든 텍스트 조각 (즉, '< span>First name: < /span>< br/>< b>John< /b>''First name: John'과 일치하도록 태그를 무시해야 함)을 HTML 페이지에서 찾아야합니다. 새로운 요소로 장식하고 맞춤 CSS 스타일 적용) 이러한 조각을 찾을 수 있어야합니다. 이것들을 화면으로 스크롤 할 수 있어야한다. 기능은 Skype 브라우저 플러그인이 페이지에서 발견 된 전화 번호로 수행하는 것과 유사합니다.정규 표현식과 일치하는 문자열을 포함하는 DOM 요소 찾기

+7

:

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

가 실행 예입니다 작동하지 않는 코드가 있습니까, 아니면 "give me teh codez"입니까? 너 뭐 해봤 니? – CanSpice

+0

접근 방법을 찾아야합니다. 코딩을 할 수 있습니다. 이미 해결 된 코드와 코드를 사용할 수 있다면 더욱 좋습니다. –

+0

jQuery는 contains() 선택자를 사용하여이 작업을 수행 할 수 있습니다. substring search 대신 regexp search를 사용하기 위해 로직을 재정의 할 수 있습니다. –

답변

-1

다음과 같은 방법을 시도해 보셨습니까?

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

+1

이렇게하면 동적으로 추가 된 모든 수신기가 삭제 될뿐 아니라 사소한 콘텐츠가있는 페이지의 브라우저마다 요소, 속성 및 속성이 서로 다른 방식으로 엉망이 될 수 있습니다. – RobG

+0

DOM에서 내 검색 결과의 위치에 대한 정보를 유지해야하거나 document.body.innerText.match()를 수행 할 수 있습니다. 필요한 정보가 아닙니다. –

2

당신이 중 하나를 재귀 적 요소의 는 TextContent (적절한) 또는 innerText와 특성에서 찾고 DOM을 걸을 수, 또는 당신이 getElementsByTagName에 의해 반환 된 컬렉션을 통해 루프를 사용할 수 있습니다. 어느 쪽이든, 텍스트와 부모 요소를 확인한 후에는이를 대체하는 방법을 찾아야합니다.

문자열이 하나 이상의 다른 요소로 분할되는 경우 대체에서 문서 구조에 대한 요구 사항은 무엇입니까?

+0

노드 중심 접근법과 문자열 중심 접근법을 사용하면 더 많은 이식성을 얻을 수 있다고 주장합니다. 게다가, 그것은 대부분의 사람들이 문제가있는 DOM의 측면입니다 :). –

+0

네,하지만 OP는 문자열이 두 개 이상의 요소로 나뉘어져 있어도 문자열을 원하기 때문에 텍스트 노드 만 보더라도 작업을 수행 할 수 없습니다. 분할 문자열을 어떻게 처리할지는 모르지만 적어도 위의 메서드는 전체 문자열이있는 가장 가까운 조상을 찾습니다. – RobG

2

당신은 First name:를 포함하는 <span> 태그 다음에 올 John를 포함하는 <b> 태그를 얻을 수 jQuery selectors를 사용하고 예를 들어 스타일을 적용 할 수 : http://jsfiddle.net/XzwNj/

+0

그것은 단지 예일 뿐이며 특정 사례가 아닙니다. –

관련 문제