2011-10-19 3 views
2

자바 스크립트에서 다음 문자열이 있습니다.prototype에서 일치하는 문자열

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

위의 문자열에서 "This is link"을 얻고 싶지만 성공하지 못했습니다.

나는이 또한

str.innerHTML 

하지만 정의되지 않은

답변

1

점점 문자열은 DOM의 객체가 아닌했습니다. - str 변수는 문자열이며 innerHTML 속성은 DOM (문서 객체 모델) 노드에만 존재하므로이 방법을 사용하려면 먼저 innerHTML 속성으로 변환해야합니다.

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

var textYouWant = domNode.innerHTML; 

또는 jQuery로

$(str).html(); 
+0

오. 그래서이 답변은 순수한 자바 스크립트에 무엇입니까? – Awan

+0

jQuery에서 더 간단하지만, 여기서는 프레임 워크가 없습니다. - $ (str) .html()'(미안하지만, 프로토 타입 사용자가 아닙니다) – tobyodavies

+0

은 Element 클래스와 유사합니다. http : // api .prototypejs.org/dom/요소/새 / – tobyodavies

3

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' 
0

프로토 타입의 stripTags() 일을하지만, 귀하의 요구 사항에 따라 당신은 할 수있다 실제로 모든 HTML 태그를 제거하고 싶지는 않습니다. 예를 들어 태그 안에 태그가있는 경우 stripTags() 태그도 제거됩니다. 다음은 정규 표현식을 사용하여 일반 자바 스크립트에서 그것을 할 거라고 방법은 다음과 같습니다

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

위의 기능은 태그 내에 다른 태그를 건드리지 않고, 공백의 손질 태그의 내용을 반환합니다.

관련 문제