通过Javascript提取文本

时间:2011-11-10 02:58:48

标签: javascript grep

我需要做一些我希望通过一些HTML和其他文本的JavaScript解析的简单文本。

我已经可以获取课程的文字,但我无法从第一个<div>

中提取文字
<div>NRG Software, LLC.</div>
<div class="street-address">10437 innovation dr #311</div>
<span class="locality">milwaukee</span>,
<span class="region">WI</span>
<span class="postal-code">53226</span>
<div class="country-name">United States</div>

我有另一个看起来像这样的块,我想得到订单#。

<p class="header-tools">
    <a class="button-medium button-medium-grey print-view" href="http://www.zzz.com/your/orders/26565180?show_panel=true" data-stylesheet="receipt-print-receipt.css">
        <span>Print Order</span>
    </a>
</p>
<div class="print-logo print-only">
    <img src="/images/logo-print.png" alt="zzz">
</div>
<h2>Order #26565180 on Dec 7, 2010</h2>

2 个答案:

答案 0 :(得分:1)

试试这个:

var mytext = document.getElementById("street-address").textContent;

或获取HTML:

var myhtml = document.getElementById("street-address").innerHTML;

您应该为需要解析的内容的任何元素添加ID。

更新: IE7和后面不支持textContent所以你需要使用以下内容来支持旧版本的IE:

var myhtml = document.getElementById("street-address").innerText;

答案 1 :(得分:0)

您可以将所有文本节点与...连接在一起

var elem = document.getElementsByTagName('div')[0],
    text = elem.textContent || elem.innerText;

jsFiddle

或者,您可以通过递归迭代文本节点来自己构建文本...

var getText = function me(element) {
    var text = '',
        children = element.childNodes,
        childrenLength = children.length;

    for (var i = 0; i < childrenLength; i++) {

        if (children[i].nodeType == 1) {
            text += me(children[i]);

        } else if (children[i].nodeType == 3) {
            text += children[i].data;

        }

    }
    return text;
}

jsFiddle