簡體   English   中英

注冊。 進出口。 在javascript中獲取<a>子字符串中的</a>最后一個<a>標簽</a>

[英]Reg. exp. in javascript to get last <a> tag in substring

我需要使用javascript查找頁面中最后一個<a>標記的文本。 我閱讀了這樣的完整HTML:

var str = document.body.innerHTML;

現在,我需要找到str的一個子部分,在該子部分中,我需要找到最后一個<a>標簽。 <a>標記上可能有更多,但實際計數將有所不同。

這是有關HTML外觀的示例:


<td>

        <!-- BREADCRUMB--> 
        <table border="0" cellspacing="0"

            cellpadding="0"> 
            <tr> 
                <td style="width: 20px; padding-left: 15px;" valign="middle"> 
                    &nbsp;<a href="Default.aspx"><img src="images/home_button.gif" alt="home" border="0"

                        style="width: 15px; height: 14px;" /></a> 
                </td> 
                <td style="width: 550px; padding-left: 5px;" valign="middle"> 
                    <span class="Text"> 
                        <a href='Default.aspx'>Home</a> >
      <a href='CategoryMain.aspx?query=CZJ/7jr0Rq0mC78s0LikwNmBEwgNRtoEjG4cb6zHk46uJItFusMclq0wZCh1wGS2'>Parfume</a> >
      <a href='BrandsListing.aspx?query=CZJ/7jr0Rq0mC78s0LikwNmBEwgNRtoEjG4cb6zHk465BKkuLpVAwR0SP9v7KIHwSjHLYHxaEB1gp/DR0tT5hvBc/P/seC3NkvMSTAlIgeUoaEPLcBX/wyfqnK0dfYmkN3fGbFp/dIbBYKGQVRlF5lVNzw+DcOjSPuiVeiUTFuozCRO/xUJ9sumgm5fB1uwbQpUawHk1xUBVlq0lQmvGSznPA02SJH+t0d/2mm8UtUt6iBbH9wUOStWj5oKWMY+KCLyF1lhnL/mV2toi247YyA=='>Herredufte</a> > 
      <a href='ProductListing.aspx?query=AVqR4KVNq4jY0bZVFKEeYKGDosMoiEFZG6z2wWUHFnQPAkt8EaweP3EFy8mMm11vE+rSYj+OdLzbb41Vse4QE0vSjf36vrcSEJee9K1y/5ZMjd4Oni1tZUNBe6bZdssnYEXf0PGT9nU8HBFX+2mmgxbmijm9NESLPiWtnTY9rLpZGix4zQdXfnt1S1oY+sHQBDg1jXnhUTEsKoo0fZBwQqkUQgmDX5cUB5UCMzGTP6NRTufhqTRy5uhMeNqXzufAoP2NsI5va/HwWHRT3MeQ8U/0oQM3y5KiP3LJuTx2kwXo4v3qemaK3B+M6k1nSRqvUfvTnEcbGyrYEjiaTV0kEixbDojt3V2aNbXBRxax1yXQd9QIrVmryeymxX2Ga7f88KaC70fIahkjdQ2z3E+PkwpZ6iI5hp9Oj5jCm/5ffWGqUzJqF9mnTiSShg7VPRdx'>Bvlgari</a> > 
      Eau de Toilette Spray
                    </span> 
                </td> 
                <!-- Changed Section: The style will should be this !--> 
                <!-- <td class="Text"><a href="wishlist.html">Your Wish List</a> &nbsp;</td> --> 
                <td class="Text" style="padding-right: 10px; width: 92px; text-align: right;" valign="middle"> 


                   <a href="SiteContent.aspx?siteContentName=Price Guarantee"> 
                            <span id="ctl00_Label1">Prisgaranti</span> 
                       </a> 
                </td> 
                <td class="Text" style="padding-right: 0px; width: 50px; text-align: left;" valign="middle"> 
                    <a href="Wishlist.aspx"> 
                        <span id="ctl00_Label2" title="Ønskeliste">Ønskeliste</span></a> 
                </td> 
                <td class="Text" style="padding-right: 0px; width: 45px; text-align: left;" valign="middle"> 
                    <a href="MemberLogin.aspx"> 
                        <span id="ctl00_lblLogin" title="Login">Login</span></a> <a href="Logout.aspx"> 
                                </a></td> 
                <!--<td class="Text"><a href="becomeamember.html">Become a Member</a> &nbsp;</td>  --> 
                <td align="right" style="width: 30px; padding-right: 9px;" valign="middle"> 
                    <input type="image" name="ctl00$ImageButton1" id="ctl00_ImageButton1" src="images/flag_uk.gif" alt="Switch language" onclick="setLangCookie();" style="height:12px;width:21px;border-width:0px;" /> 
                </td> 
            </tr> 
        </table> 
        <!-- /BREADCRUMB --> 
    </td> 
</tr> 
</table>

我需要的是獲取<!-- BREADCRUMB -->注釋內<span class="Text">內的最后一個<a>標簽的<span class="Text"> 在這種情況下,其文字為“寶格麗”

如果能在這種情況下得到所有<a>標簽文本的數組,那將是很好的:

“家”,“香水”,“ Herredufte”,“寶格麗”

在PHP中,您可以通過在模式中使用(),然后再引用它們來做到這一點,但是我似乎無法使其在JS中工作。 我剛接觸reg.exp。 在Javascript中。

希望有道理。

BR /淑娜

在原型中獲取jQuery或Prototype.js,您將編寫類似

$$("tr td .Text a").map(function(el) { return el.innerText });

這將返回您想要的。

我認為您寧願從元素中讀取信息,也不希望獲取頁面的整個HTML代碼。

使用jQuery,您可以輕松獲取信息:

var texts = $('span.Text a').map(function(){ return this.html(); }).get();

使用純Javascript遍歷沒有身份的元素會有點困難。 如果您可以在跨度中添加id="Text" ,它將變得更加容易:

var links = document.getElementById('Text').getElementsByTagName('a');
var texts = [];
for (var i = 0; i <  links.length; i++) texts.push(links[i].innerHTML);

感謝所有的答案! 特別是塞思和古法讓我回到了正確的軌道上:)

這是我的解決方案:

    for(var i = 0, n = spanArray.length; i < n; ++i) {
        if(spanArray[i].getAttribute("class") == 'Text') {
            spanArray[i].id = 'mltracking_breadcrumbs';
            var links = document.getElementById('mltracking_breadcrumbs').getElementsByTagName('a');
            var texts = [];
            for (var j = 0; j <  links.length; j++) {
                texts.push(links[j].innerHTML);
            } 
            alert(links.length);
        }
    }

我知道它對不止一個類名稱為Text的spantag敏感,所以請告訴我是否有更好的選擇。 我在span標簽上沒有ID,也沒有選擇獲取它的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM