我需要使用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>
我需要的是获取<a>
内<span class="Text">
条评论内的最后一个<!-- BREADCRUMB -->
标记的文字。在这种情况下,它的文字“Bvlgari”
如果我能在这种情况下获得所有<a>
标记文本的数组,那将是很好的:
“Home”,“Parfume”,“Herredufte”,“Bvlgari”
在PHP中你可以通过在模式中使用()然后引用它们来做到这一点,但我似乎无法在JS中使用它。我是使用reg.exp的新手。在Javascript。
希望它有意义。
BR /淑娜
答案 0 :(得分:1)
获取jQuery或Prototype.js 在原型中,你会写一些类似
的东西$$("tr td .Text a").map(function(el) { return el.innerText });
会返回你想要的东西。
答案 1 :(得分:1)
我认为您应该从元素中读取信息,而不是获取页面的整个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);
答案 2 :(得分:1)
感谢所有答案!特别是Seth和Guffa让我重回正轨:)
这是我的解决方案:
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,也没有选择来获取它。