2011-07-22 41 views
2

是否有一個JavaScript函數將字符串作爲輸入並解析該字符串,如果它是HTML並將相應元素返回給我?是否有一個JavaScript函數將字符串作爲輸入並解析該字符串,因爲它是HTML並將相應元素返回給我?

示例:F("<div id='outer'><div id='inner'><span hello></span></div></div>") 將返回一個div HTMLElement,它具有一個子div,而該子div又具有一個子範圍。

+0

你使用jQuery是有益的?這個框架可以做你想做的。使用$(「

」) –

+0

請不要jquery。我想要一個JavaScript解決方案 – TwentyTwo

+0

請參閱下面的文章。你對這個解決方案有什麼看法? –

回答

1

又是怎麼回事DOMParser? 下面是一個例子:

var str = '<div id="outer"><div id="inner"><span> hello</span></div></div>'; 

function parseStringToDOMElement (str) 
{ 
    var xmlDoc = null; 
    if (window.DOMParser) 
    { 
     var parser = new DOMParser(); 
     xmlDoc = parser.parseFromString (str, "text/xml"); 
    } 
    else if (window.ActiveXObject) 
    { 
     xmlDoc = new ActiveXObject ("Microsoft.XMLDOM"); 
     xmlDoc.async = false; 
     xmlDoc.loadXML (str); 
    } 
    return xmlDoc.firstChild; 

} 

var node=parseStringToDOMElement(str); 
console.log(node); 

我希望它會

5

不,沒有這樣的功能。但你可以使用jQuery $("<div id='outer'><div id='inner'><span hello></span></div></div>")這將做你想做的。

+0

所以實際上有這樣一個函數:jQuery元素! – Falanwe

+0

@Falanwe,我的意思是純js –

+0

準確地說,要得到實際的HTLMElement,你需要'.get(0)'。 – pimvdb

2

這是一個非常簡單的純JavaScript的解決方案:

http://jsfiddle.net/7HdJc/1/

function returnTheNodes(htmlStr) 
{ 
var myCont = document.createElement('DIV'); // create a div element 
myCont.innerHTML = htmlStr; // create its children with the string 
return myCont.childNodes; // return the children elements created :) 

} 


var newElems = returnTheNodes("<div id='outer'><div id='inner'><span hello></span></div></div>"); 


for(var i = 0; i < newElems.length ; i++) 
{ 
alert(newElems[i].id); // newElems[0] has the first DIV 

} 
+0

+1:我正要發佈關於'innerHTML'的答案,但我的回答並沒有將它全部整齊地包裝在一個完整的jsfiddle函數中。 – nnnnnn

相關問題