我们的博客上有大量网页,这些网页具有指向某个域(domain1.com)到另一个域(domain2.com)的链接。
为了避免手动更改内容,我们尝试不更改链接(href)进行操作。
链接可以通过其class
来标识,而链接没有id
。
<a href="domain1.com/id/12345" class="ChangeDomain">Click Here</a>
<a href="/internal_url/" class="">Click Here</a>
<script type="text/javascript">
document.getElementsByClassName("ChangeDomain").onclick = function() {
document.getElementsByClassName("ChangeDomain").href="domain2.com";
return false;
};
</script>
还有另一件事我不知道该如何完成。 只有根域changs和domain2.com需要具有与domain1.com相同的路径。 网址 domain1.com/id/12345 变为 domain2.com/id/12345
答案 0 :(得分:2)
如果您可以使用jquery,则可以通过这种方式在文档准备就绪后修改所有hrefs
$(document).ready(function(){
$('.ChangeDomain').each(function(){
var oldUrl = $(this).attr("href"); // Get current url
var newUrl = oldUrl.replace("domain1.com", "domain2.com"); // replace domain
$(this).attr("href", newUrl); // Set herf value
});
});
想法是在文档准备就绪时查找所有href,然后用新域替换当前域
如果您确实需要使用mousedown,请将其更改为:
$(document).ready(function(){
$('.ChangeDomain').mousedown(function(){
var oldUrl = $(this).attr("href"); // Get current url
var newUrl = oldUrl.replace("domain1.com", "domain2.com"); // replace domain
$(this).attr("href", newUrl); // Set herf value
});
});
答案 1 :(得分:2)
与其使用onclick
添加事件,而不是使用addEventListener
添加事件。使用replace
将单词domain1
替换为domain2
。
const alinks = document.querySelectorAll(".ChangeDomain");
alinks.forEach(a => {
a.addEventListener('click', function(e) {
e.preventDefault();
const href = this.href;
const newHref = href.replace('domain1', 'domain2');
console.log(newHref);
})
});
<a href="domain1.com/id/12345" class="ChangeDomain">Click Here</a>
<a href="/internal_url/" class="">Click Here</a>
答案 2 :(得分:2)
您可以尝试
$elemMatch