是否有一个javascript函数,它接受一个字符串作为输入并解析该字符串,如果它是HTML并返回我的相应元素?

时间:2011-07-22 07:05:15

标签: javascript html

是否有一个javascript函数将字符串作为输入并解析该字符串,如果它是HTML并返回相应的元素?

示例:F("<div id='outer'><div id='inner'><span hello></span></div></div>") 将返回一个div HTMLElement,它有一个子div,而div又有一个span子。

3 个答案:

答案 0 :(得分:5)

没有这样的功能。但是你可以使用jQuery $("<div id='outer'><div id='inner'><span hello></span></div></div>")来做你想做的事。

答案 1 :(得分: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

}

答案 2 :(得分: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);

我希望它会有所帮助