Javascript href附加到';a';第二次单击时进行标记

Javascript href附加到';a';第二次单击时进行标记,javascript,html,Javascript,Html,我想使用js基于链接点击动态生成url 下面是我的代码 <a onclick="buildURI(this)" href="https://www.facebook.com/sharer/sharer.php?u=" class="sharelink" target="_blank" title="Facebook"><img src="facebook32.png" /></a> <a oncli

我想使用js基于链接点击动态生成url

下面是我的代码

<a onclick="buildURI(this)" href="https://www.facebook.com/sharer/sharer.php?u=" class="sharelink"
                target="_blank" title="Facebook"><img src="facebook32.png" /></a>
            <a onclick="buildURI(this)" href="https://wa.me/?text=" class="sharelink" target="_blank"
                title="WhatsApp"><img src="whatsapp24.png"></a>
            <a onclick="buildURI(this)" href="mailto:?" class="sharelink" target="_blank"
                title="Mail"><img src="envelope.png"></a>

function buildURI(item) {
    if (item.href == 'mailto:?') {
        subject = 'subject=' + document.getElementById('header').innerText;
        body = "&body=Check out at this url : " + window.location.href;
        item.setAttribute('href', item.href + subject + body);
    } else {
        item.setAttribute('href', item.href + window.location.href);
    }
}

如果出现以下情况,应将else条件更改为else:


函数buildURI(项){
如果(item.href===“mailto:?”){
subject='subject=+document.getElementById('header').innerText';
body=“&body=在此url上签出:”+window.location.href;
item.setAttribute('href',item.href+主题+正文);
}如果(item.href=='https://www.facebook.com/sharer/sharer.php?u=“|| item.href==”https://wa.me/?text=') {
item.setAttribute('href',item.href+window.location.href);
}
}
试试这个

 function buildURI(item) {
    if (item.href.includes('mailto:?')) {
        item.href='mailto:?';
        subject = 'subject=' + document.getElementById('header').innerText;
        body = "&body=Check out at this url : " + window.location.href;
        item.setAttribute('href', item.href + subject + body);
        return;
     }
    else if(item.href.includes('facebook.com')) 
            item.href="https://www.facebook.com/sharer/sharer.php?u=";
    else if(item.href.includes('wa.me'))
            item.href="https://wa.me/?text=";
    item.setAttribute('href', item.href + window.location.href);
}

这首先不应该是单击功能,因为它不是一个可重复的过程。加载页面后只需执行一次

;window.onload=函数(){
//REM:在页面加载时构建正确的链接

对于(var tListOfLinks=document.querySelectorAll('a.sharelink'),i=0,j=tListOfLinks.length;iBecause
(item.href=='mailto:?'))
只在第一次使用时才有效,而else部分会不断追加自身。谢谢!我知道这里的问题。但是,我没有找到处理这个问题的最佳方法,因为这个操作符存储该元素,每当我单击其中一个链接时,它都会追加到上一个链接。请建议我动态执行此操作的正确方法。谢谢大家。我得到了一个更好的方法。从所有“a”标记中删除href属性,然后在函数中比较按钮标题并附加该url。我将添加有问题的工作代码。在原始函数的末尾添加
item.onclick=null
是最快的解决方案。需要时只做一次。根据经验。适用于邮件。但对于facebook和whatsapp链接要工作,我必须以类似的方式重置href值,对吗?我认为最好在函数中比较'a'类型并将href初始化为相应的类型并设置href属性。有什么想法吗?谢谢,有了你的回答,我得到了上述想法。现在,我也可以在js中管理正确的url,而不是在html中编辑。我我会更新问题中的正确方式自己评论如果我的答案对你有帮助,请向上投票。如果你认为我的答案正确,请标记为正确。谢谢你不能同时做这两件事,因为你的答案不是我想要的理想解决方案。对于解决方法,我不需要堆栈溢出。对不起,伙计。无论如何,谢谢。为什么我不能用onclick来做?为什么我需要通过执行onload本身的方法来分配href吗?什么是用户根本不想点击url?我想我找到了一个解决方案,谢谢,但没有人说你不能。“这本来不应该是一个点击功能,因为它不是一个可重复的过程”,那么这是什么呢?这是一个建议,也是一个建议。不是教条。你可能会问gue如果用户不点击任何链接会发生什么,我可能会争论如果用户点击多个或同一个链接两次会发生什么。选择让你的船漂浮的东西。谢谢。我可以将你的论点用于不同的情况。不在这里。
function buildURI(item) {
        if (item.href == 'mailto:?') {
            subject = 'subject=' + document.getElementById('header').innerText;
            body = "&body=Check out at this url : " + window.location.href;
            item.setAttribute('href', item.href + subject + body);
        } else {
            item.setAttribute('href', item.href + window.location.href);
        }
        item.onclick = null;
    }
 function buildURI(item) {
    if (item.href.includes('mailto:?')) {
        item.href='mailto:?';
        subject = 'subject=' + document.getElementById('header').innerText;
        body = "&body=Check out at this url : " + window.location.href;
        item.setAttribute('href', item.href + subject + body);
        return;
     }
    else if(item.href.includes('facebook.com')) 
            item.href="https://www.facebook.com/sharer/sharer.php?u=";
    else if(item.href.includes('wa.me'))
            item.href="https://wa.me/?text=";
    item.setAttribute('href', item.href + window.location.href);
}