javascript
  • jquery
  • 2011-07-28 113 views 0 likes 
    0

    我有一个字符串从div中提取并存储在变量“str”中。我现在需要提取它的子集<a href="blah">...</a>javascript从字符串中提取html块

    str = '<div id="xyz"><p>This is a paragraph</p><a href="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=brd&FlightID=2997227&Page=&PluID=0&Pos=9088" target="_blank"><img src="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=bsr&FlightID=2997227&Page=&PluID=0&Pos=9088" border=0 width=300 height=250></a></div>'; 
    

    在此先感谢您的任何帮助。

    +0

    有一件事可能有助于答案:你真的想对字符串本身进行操作吗?或者你想从DOM中提取信息?如果前者,是否有任何规则如何形成字符串?也就是说,href是第一个还是唯一的属性?字符串中有多少个标签? –

    回答

    2
    1. 使其成为临时div的innerHTML。
    2. 使用getElementsByTagName(“A”)来检索所有“A”节点。
    3. 得到他们的HTML。

    这里是一个正在运行的例子:http://jsfiddle.net/3fZch/

    var str = '<div id="xyz"><p>This is a paragraph</p><a href="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=brd&FlightID=2997227&Page=&PluID=0&Pos=9088" target="_blank"><img src="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=bsr&FlightID=2997227&Page=&PluID=0&Pos=9088" border=0 width=300 height=250></a></div>'; 
    
    
    var newElem = returnTheParentNode(str); 
    var anchors = newElem.getElementsByTagName('A'); 
    /* anchors has all the a tags of the html string */ 
        for(var i = 0 ; i < anchors.length ; i++) 
        { 
         var aHTML = getHTML(anchors[i]); 
         alert(aHTML); 
        } 
    
    
    
    
    function returnTheParentNode(htmlStr) 
    { 
    var myCont = document.createElement('DIV'); // create a div element 
    myCont.innerHTML = htmlStr; // create its children with the string 
    return myCont; // return the parent div 
    
    } 
    
    function getHTML(theNode) 
    { 
        var myCont = document.createElement('DIV'); 
        myCont.insertBefore(theNode,null); 
        return myCont.innerHTML ; 
    } 
    
    +0

    最好让这个临时* div *不可见(例如'display:none')! –

    +0

    +1,但也许没有完成工作。如果OP想要A元素为HTML,那么将每个A放入临时div并获取div的innerHTML。不要使用正则表达式,它们在某些情况下可能会失败。 – RobG

    +1

    @Creadiff - 如果div永远不会添加到文档中,则不需要。 – RobG

    2

    你可以尝试像下面:

    var a = $(str).find('a').html();

    0

    你需要的表达式是:

    str.match(/a href="([^"]*)"/)[1] 
    

    但这假定您的字符串中只有一个a标记,并且您使用双引号来分隔href。

    发了的jsfiddle:http://jsfiddle.net/eDAuv/

    +0

    也取决于作为第一个属性出现的href - 这不能保证。 – RobG

    +0

    Rob,没关系。该字符串将只包含一个块。 – user460114

    0

    这可能工作:

    var link = $(str).find("a").get(0).outerHTML; 
    alert(link); 
    
    +0

    有没有办法删除超链接块以外的所有东西?如果字符串每次都不相同。 – user460114

    +0

    编辑了答案 –

    0

    之前,将其存储在一个字符串,为什么不提取路段?

    myLink = $(".myDiv a").html() 
    
    相关问题