[英]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">
<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> </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> </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.