如何在onmousedown事件中更改具有特定类属性的链接的根域?

时间:2019-05-09 05:28:16

标签: javascript html

我们的博客上有大量网页,这些网页具有指向某个域(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

3 个答案:

答案 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