从 DOM 获取变量值并将它们用作 webhook 中的参数

Get variable values from the DOM and use them as parameters in a webhook

我是 JS 的新手,正在尝试解决 Webflow 中的一个限制。我想从网页中获取一些值,并将它们用作 webhook 中的参数。

页面结构可能如下所示:

<body>
  <div id="job_ID" class="hidden">123job</div>
  <div id="member_ID" class="hidden">123member</div>
  <a href="webhook.link" class="button">link</a>
</body>

我想用 https://hook.integromat.com/XXXXX?member=123member&job=123job

之类的东西替换 webhook.link

我一直在阅读有关 document.getElementByIddocument.createElement 的内容,但老实说,我有点不知所措。 如何使用页面中的 job_IDmember_ID 值在 webhook 中使用?


加分题

此外,有没有办法设置它以便单击按钮触发 webhook 而不是访问 webhook URL?

HTML

<body>
  <div id="job_ID" class="hidden">123job</div>
  <div id="member_ID" class="hidden">123member</div>
  <a href="webhook.link" class="button">link</a>
</body>

JAVASCRIPT

window.addEventListener('load',function(){
let button = document.querySelector('.button'); 
button.addEventListener('click',function(event){
    event.preventDefault();
    event.target.href = getHref();
});
function getHref(){
    let jobID = document.querySelector("#job_ID").innerHTML;
    let memberID = document.querySelector("#member_ID").innerHTML;
    return `https://hook.integromat.com/XXXXX?member=${memberID}&job=${jobID}`;
}

每当您想访问 DOM 元素时,您都需要等待 window 加载,否则 javascript 将找不到 DOM 元素。因此,在 window 加载事件中启动 javascript。

文档对象的 querySelector 方法在 selecting 元素时更有效(在我看来)。它的格式为:

document.querySelector('tagName'); //this will get an element by tag
document.querySelector('p');

document.querySelector('.className'); //Starting the string with a period will select an element by class.
document.querySelector('.output');

document.querySelector('#elementID'); //Starting the string with a # will get an element by it's ID attribute
document.querySelector('#job_ID');

使用 querySelector 只会 return 它找到的与您的 selector (括号内的内容)匹配的第一个元素。如果需要 select 多个元素,请使用 querySelectorAll

document.querySelectorAll('.hidden'); //will get all elements with class=hidden

在上面的 button.addEventListener 函数中,您会看到命令

event.preventDefault();

这可以防止事件的默认操作发生,例如锚标记重定向到另一个页面。相反,您将在 preventDefault 语句之后放置您希望按钮执行的任何操作的代码。

祝你项目顺利!