javascript - 将JS变量动态设置为单击锚的href
问题描述
我需要根据点击链接的 href 设置变量的值。
我知道我可以使用事件侦听器设置变量,该事件侦听器会在单击链接时运行它
var x = document.getElementById("myAnchor").href
但这被设置为单个元素。我需要它根据单击的链接动态工作。例如:
<a href="/link1">Partner A</a>
<a href="/link2">Partner B</a>
<a href="/link3">Partner C</a>
// function to attach click event to all links
function attachClickEvent() {
var linklist = document.getElementsByTagName('a');
var listLength = linklist.length;
var i = 0;
for (; i < listLength; i++) {
linklist[i].addEventListener("click", ClickedLinkEvent);
}
}
window.onload = attachClickEvent;
// function that creates click event
function ClickedLinkEvent() {
var anchor = obj.href;
console.log(anchor);
if (anchor.includes('clientdomain')) {
//do nothing
} else {
SendLinkEvent();
}
}
// function to run on click event
function SendLinkEvent() {
ga('send', {
hitType: 'event',
eventCategory: 'Affiliate Link',
eventAction: 'Click',
eventLabel: anchor
});
}
如果单击合作伙伴 A,则需要将锚变量设置为 /link1,如果单击合作伙伴 B,则需要将锚变量设置为 /link2。
那么,有没有办法用 vanilla JS 做到这一点?
解决方案
如果您调整ClickedLinkEvent
方法声明并向方法签名添加参数,那么您将拥有事件对象。事件对象有一个目标参数。如果我理解正确,这就是你所需要的。不是吗?
function ClickedLinkEvent(e) {
console.log('hello', e);
var anchor = e.target.href;
console.log(anchor);
if (anchor.includes('clientdomain')){
//do nothing
}
else {
SendLinkEvent(anchor);
}
}
推荐阅读
- regex - PowerShell 多行匹配与正则表达式
- java - 如何将 oAuth2.0 与 Spring boot 1.5.8.RELEASE 集成
- python - 如何将模型从 python 烧瓶迁移到 heroku 中的 cleardb mysql 数据库?
- git - 有没有办法在变基之前提前知道/估计冲突提交和文件的数量?
- excel - 创建 Excel 数据库以根据 ID 查找值以生成要打印的 jpg 或 pdf 形式的证书
- angular - angular 根据条件隐藏组件的干净方法是什么?
- javascript - JS console.log 一个二维矩阵
- gcc - GCC 等效于 armclang --target=aarch64-arm-none-eabi 编译器选项
- expo - @react-native-async-storage/async-storage 在使用 expo 生成 ipa 或 apk 时不起作用
- laravel - 在Laravel 8中将文件上传到firebase后如何获取下载链接