2011-10-19 76 views
2

我在javascript中有以下字符串。原型js中的字符串匹配

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

我想要得到"This is link"從上面的字符串,但沒有成功。

我想這也

str.innerHTML 

但得到不確定

回答

1

字符串是不是一個DOM對象。 您擁有的變量 - str是一個字符串,innerHTML屬性僅存在於DOM(文檔對象模型)節點上,因此您必須首先將其轉換爲使用此方法。

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

var textYouWant = domNode.innerHTML; 

或者用jQuery

$(str).html(); 
+0

好的。所以這個答案是在純粹的JavaScript? – 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()也會將其刪除。這裏是你如何使用正則表達式做到在普通的JavaScript:

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

上述函數將返回標籤,修剪空白的內容,不接觸標籤內的其他標籤。