соответствие строк в prototypejs - PullRequest
2 голосов
/ 19 октября 2011

У меня есть следующая строка в javascript.

str = '<a href="/display/1">This is link</a>';

Я хочу получить "This is link" из указанной выше строки, но не получилось.

Я пробовал также

str.innerHTML

но получаю не определено

Ответы [ 3 ]

3 голосов
/ 19 октября 2011

В PrototypeJS вы можете использовать функцию stripTags():

'a <a href="#">link</a>'.stripTags();
 // -> 'a link'
 'a <a href="#">link</a><script>alert("hello world!");</script>'.stripTags();
// -> 'a linkalert("hello world!");'
 'a <a href="#">link</a><script>alert("hello world!");</script>'.stripScripts().stripTags();
// -> 'a link'
1 голос
/ 19 октября 2011

Строка не является объектом DOM. Ваша переменная - str является строкой, свойство innerHTML существует только на узлах DOM (объектная модель документа), поэтому вам придется сначала преобразовать ее в эту, чтобы использовать этот подход.

var div = document.createElement('div');
div.innerHTML = str;
var domNode = div.firstChild;

var textYouWant = domNode.innerHTML;

Или с помощью jQuery

$(str).html();
0 голосов
/ 18 ноября 2011

Prototype's stripTags() выполнит эту работу, но в зависимости от ваших требований вы можете отказаться от удаления всех HTML-тегов.Например, если у вас есть тег внутри тега, stripTags() тоже удалит его.Вот как это делается в простом JavaScript с использованием регулярного выражения:

function textFromLink(linkText) {
    return linkText.replace(/.*<a[^>]*>\s*(.+)\s*<\/a>.*/, '$1');
}

Вышеприведенная функция вернет содержимое тега, обрезанное из пробела, без касания других тегов внутри тега.

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