我有一个电子邮件模板,用于发送包含运费跟踪编号的送货通知,如下所示,我需要使用普通javascript清除href
中的所有空格:
<a class="press-bt" id="clearSpace" href="https://www.royalmail.com/track-your-item?trackNumber=JX12 0008 990 90GB">TRACK</a>
我可以使用jQuery正确但不使用Javascript
我试图这样做:
window.onload = function() {
var str = document.getElementById("mylink");
document.write( str.replaceAll("\\s+","") );
});
使用jQuery工作代码:
$(document).ready(function() {
$('a').attr('href', function (_, val) {
return val.replace(/\s/g, '');
});
});
答案 0 :(得分:2)
如果可能,您应该删除服务器端的空间。我希望您理解没有 javascript会在您发送的电子邮件中运行。
// This prevents multiple `window.onload` conflict
window.addEventListener("load", clearLinks);
// This allows you to call the function even later if needed
function clearLinks() {
// Get list of all links in the page
var links = document.getElementsByTagName("a");
// Loop through links
for(var i=0,l=links.length; i<l; i++) {
// No need to use `getAttribute`, href is defined getter in all browsers
links[i].href = links[i].href.replace(/\s/g, "");
}
}
在现代浏览器中,您可以使用Array.prototype.forEach
替换for循环。这个方法通常可以在数组([ ... ]
)上调用,但getElementsByTagName
返回的列表不是数组,所以请使用这个技巧:
function clearLinks() {
var links = document.getElementsByTagName("a");
// Loop through links
Array.prototype.forEach.call(links, function(link) {
link.href = link.href.replace(/[cC]/g, "c");
});
}
搜索Function.prototype.call
以了解有关调用对象上的函数的更多信息。
答案 1 :(得分:0)
通过id
定位元素,抓住href属性,然后通过删除空格再次设置它。
var link = document.getElementById("mylink");
var href = link.getAttribute('href');
link.setAttribute('href', href.replace(/\s/g, ''));