Javascript href附加到';a';第二次单击时进行标记
我想使用js基于链接点击动态生成url 下面是我的代码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
<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);
}