Получение определенных символов в окружении определенного тега - PullRequest
1 голос
/ 21 июля 2010
A simple tool to store and display texts longer than a few lines.
The search button<div id="xyz">will highlight all</div> the words matching the name of objects that are members of the classes listed in searchedClasses, 
itself a member of the KeySet class. The highlighted words are hypertext.

Я хочу получить символы, которые окружены тегом div-xyz.
example output.
.... кнопка поиска выделит все слова .....

Я могу получить текущийТекст тега div следующим образом.

function myDivHTML(valueName){
     if((obj = document.getElementById(valueName)) && obj != null){
        return obj.innerHTML;
     }      
}

Я пытался использовать свойство элемента offsetParent, но существует много возможностей, например, тег div может быть внутри тега bold, тег bold может быть внутри тега p и так далее.

что я должен сделать, чтобы получить окружающий текст?ограничение может быть 10, 20 символов.

Редактировать:

Окружающий текст означает -> текст слева 10 или 20 символов и правая сторона 10 или 20 символов.

1 Ответ

2 голосов
/ 21 июля 2010

Самый простой способ сделать это, IMO - обернуть содержимое внутреннего элемента div непонятными строками с обеих сторон, а затем использовать регулярное выражение для всего абзаца, чтобы найти добавленные вами маркеры и необходимое количество символов с обеих сторон,Примерно так:

var full, result,
    // textContent for w3 compliance, innerText for IE
    txt = "textContent" in document.body ? "textContent" : "innerText",
    // Get references to both divs and store the current text of `xyz`
    out = document.getElementById("outer"),
    xyz = document.getElementById("xyz"),
    old = xyz[txt];

// wrap the inner text with something we can easily search for:
xyz[txt] = "||||" + xyz[txt] + "||||";

// Get the whole text, change the DOM text back to what it was
full = out[txt];
xyz[txt] = old;

// Find the text with our markers and surrounding text:
result = /.{0,10}\|{4}.*?\|{4}.{0,10}/.exec(full);

alert(result[0]);
// -> "ch button ||||will highlight all|||| the words"

// Finally, replace your wrapping strings:
result = result[0].replace(/\|{4}/g, "");

alert(result);
// -> "ch button will highlight all the words"

Возможно, вы захотите слегка откорректировать регулярное выражение так, чтобы оно совпадало, скажем, с двумя целыми словами до и после внутренней строки.Пример
http://www.jsfiddle.net/Sy4rT/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...