2013-02-28 2 views

답변

7

당신이보고 한 번 div (당신이 document.getElementById 또는 다른 DOM 기능의, various specs here를 통해 할 수 있음), 당신도 textContent 또는 innerTextdiv의 텍스트를 찾는 데 사용할 수 있습니다. 그런 다음 indexOf을 사용하여 그 문자열을 찾을 수 있습니다.

하위 수준에서는 재귀 함수를 사용하여 창에있는 모든 텍스트 노드를 검색 할 수 있습니다. 보다 훨씬 복잡합니다. 기본적으로 대상 div (Element)부터 childNodes까지 반복하고 Text 인 경우 nodeValue 문자열을 검색하거나 (Element 초인 경우) 반복하여 검색 할 수 있습니다. (그들 중 하나가 거기에 "foo"nodeValue이이 두 Text 노드도 있기 때문에 ...

<p><span>fo</span>o</p> 

:

트릭은 순진 버전이 마크 업에 "foo"을 찾기 위해 실패 할 것입니다 "fo", 다른 "o").

+0

은 (문자열이 강조 될 것이다 반환하고 다시 한 번 검색을 클릭하면 Div의 다음 경기로 이동합니다. – VeePee

+1

@VeePee : 당신이 쓰는 것이 두려울 것입니다. (가능하다면 참 고통 스러울 것입니다.)'window.find '조차도 표준화되어 있지 않습니다. 하지만 다시 말하자면,'Text' 노드에서 텍스트를 찾고, 그 노드를 강조 표시하여'span' 등으로 둘러 쌀 수 있기 때문입니다. –

-2

아마도 jquery를 사용하지 않으려 고합니다 ... 그렇지 않은 경우이 $('div:contains(whatyouarelookingfor)')을 사용할 수 있습니다. 유일한 일치점은 일치하는 하위 div도 포함하는 부모 요소를 반환 할 수 있다는 것입니다.

0

다른 답변에 따르면이 경우 window.find 기능을 사용할 수 없습니다. 좋은 소식은, 당신이 이것을 전적으로 스스로 프로그래밍하지 않아도된다는 것입니다. 요즘에는 이것으로 많은 도움이되는 rangy라는 라이브러리가 있기 때문입니다. 따라서 코드 자체가이 대답에 붙여 넣기가 너무 많아서 난 단지 found here 일 수있는 불안정한 라이브러리의 코드 예를 참조 할 것입니다. 코드에서 보면 당신은

searchScopeRange.selectNodeContents(document.getElementById("content")); 

로 대체 할 수

searchScopeRange.selectNodeContents(document.body); 

콘텐츠 사업부에서만 특별히 검색하려면 찾을 수 있습니다.

0

나는 그것을 시도하지는 않았지만 jQuery 문서에 따라 작동해야한다.

0

무엇을하려고 하느냐에 따라 흥미로운 작업 방식이 있습니다 (어떤 작업이 필요함).

먼저 사용자가 마지막으로 클릭 한 위치에서 검색이 시작됩니다. 올바른 컨텍스트로 이동하려면 div를 강제로 클릭 할 수 있습니다. 이렇게하면 div의 시작 부분에 내부 포인터가 위치하게됩니다.

그런 다음 평소대로 window.find를 사용하여 요소를 찾을 수 있습니다. 을 강조 표시하고 발견 된 다음 항목으로 이동합니다.자신 만의 대화 상자를 만들고 find에 의해 반환 된 true 또는 false를 처리 할 수있을뿐 아니라 위치를 확인할 수도 있습니다. 예를 들어, 현재 스크롤 위치를 저장할 수 있으며, 다음에 반환 된 결과가 div 외부에 있으면 스크롤을 복원합니다. 또한 false를 반환하면 결과를 찾을 수 없다고 말할 수 있습니다.

기본 검색 상자를 표시 할 수도 있습니다. 이 경우 시작 위치를 지정할 수는 있지만 제어를 잃어서 끝 위치는 지정할 수 없습니다.

시작하는 데 도움이되는 몇 가지 예제 코드입니다. 충분한 관심이 있다면 jsfiddle을 시도해 볼 수도 있습니다.

구문 :

window.find(aStringToFind, bCaseSensitive, bBackwards, bWrapAround, bWholeWord, bSearchInFrames, bShowDialog); 

예를 들어, myDiv 내부 검색을 시작하기 위해, 당신은 흐림을 설정 당신이 떠날 때 알려 이벤트 핸들러 (초점을 잃게) 수

document.getElementById("myDiv").click(); //Place cursor at the beginning 
window.find("t", 0, 0, 0, 0, 0, 0); //Go to the next location, no wrap around 

시도 div로 검색을 중지 할 수 있습니다.

현재 스크롤 위치를 저장하려면 document.body.scrollTop을 사용하십시오. 그런 다음 div 밖으로 점프하려고하면 다시 설정할 수 있습니다.

희망이 도움이됩니다. ~ techdude

다음
+0

나는 firefox/chrome/원정 여행. – techdude

0

내가 jQuery로 뭐하는 거지 방법 :

var result = $('#elementid').text().indexOf('yourtext') > -1 

는 참 또는 거짓 실제로 브라우저 기능을 찾을 복제 찾고 있어요

관련 문제