Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   поиск текста в div'e (https://javascript.ru/forum/events/19290-poisk-teksta-v-div%27e.html)

Shu_Shu 31.07.2011 21:24

поиск текста в div'e
 
доброго времени суток
Нужно искать и пдосвечивать текст в div элементе, есть такая функция:
function FindNext () {
            var str = document.getElementById ("findField").value;
            if (str == "") {
                alert ("Please enter some text to search!");
                return;
            }
            var found = false;
                found = window.find (str);
                if (!found) {
                    alert ("The following text was not found:\n" + str);
                }
        }


и разметка:
<input id="findField" type="text"/>
<button onclick="FindNext ();">Find!</button>
.....
.....
<div id="document">
......
</div>

Как не трудно догадаться, предполагается, что текст ищется на всей странице. И меня даже это устраивало бы, но метод find находит текст только в поле ввода из <input>. Однако, если переставить местами <input> и <div> все работает корректно, но это, к сожалению, неприемлемо. В идеале, нужно чтобы текст искался только в диве.
Нужна поддержка только webkit, всякие createtextrange не работают, да и не должны.

Shu_Shu 02.08.2011 00:36

Раз никто не знает, выкладываю свое решение, может кому пригодится. Пришлось изобрести такой костыль:
function findText() {
	var obj = window.document.getElementById("findField")
	var textToFind = obj.value
	if (textToFind == "") {
		alert("Please, input text")
		return
	}
	document.getElementById("document").innerHTML = 
	document.getElementById("document").innerHTML.
	replace(eval("/"+textToFind+"/g"),"<span style='background-color: #ffdb58'>"+textToFind+"</span>")

	var obj = window.document.getElementById("findField")
	obj.value = textToFind
}


Часовой пояс GMT +3, время: 19:00.