我有一个大表,其中一列包含电子邮件地址(+/- 60),有人告诉我在每个地址后添加一个电子邮件图标。我一直在尝试使用anchors
,.href
并.indexof
选择电子邮件链接,但没有得到任何地方(因此没有代码)。
<img src="/a/path/email.jpg" alt="e-mail" />
如果链接href
包含mailto
使用vanilla JavaScript而非 jQuery,我能否获得有关如何添加的帮助。
我有一个大表,其中一列包含电子邮件地址(+/- 60),有人告诉我在每个地址后添加一个电子邮件图标。我一直在尝试使用anchors
,.href
并.indexof
选择电子邮件链接,但没有得到任何地方(因此没有代码)。
<img src="/a/path/email.jpg" alt="e-mail" />
如果链接href
包含mailto
使用vanilla JavaScript而非 jQuery,我能否获得有关如何添加的帮助。
这是您可以使用的功能:
(function(allLinks)
{
var i, imgHTML = '<img src="mail.png" alt="mail" />';
for (i = 0; i < allLinks.length; i++)
{
if (allLinks[i].getAttribute('href').indexOf('mailto') > -1)
{//or allLinks.item(i).getAttribute('href').indexOf('mailto')
//calling the item method is said to be faster, on most browsers
allLinks[i].innerHTML += imgHTML;
}
}
}(document.getElementsByTagName('a')));
你当然可以把这个 IIFE 变成一个常规函数,在加载事件或其他东西上被调用......
分叉@adardesign 的小提琴,这里是
<table id="table">
<tr>
<td><a href="mailto:yankel@frieman.com">yankel@frieman.com</a></td>
</tr>
</table>
var table = document.getElementById("table"),
links = table.getElementsByTagName("a"),
linksLength = links.length,
i = 0,
link,
href,
text;
for(; i>linksLength; i++){
link = links[i];
href=link.href,
text = link.childNodes[0].nodeValue;
if(href.indexOf("mailto:")){
link.childNodes[0].nodeValue += text+ "<img src='path/to/email.png'>";
}
}
你可以使用 CSS 来解决这个问题
a[href^="mailto:"]:after{
content:url("path/to/email.png")
}