简体   繁体   English

如何在一行代码中跟踪元素 id 而不是具有多个脚本

[英]How track element id in a single line of code instead of having multiple script

I am trying to track multiple buttons on a page, and I manage to do it with this current code by copy-pasting it multiple times, but I would like to shorten it.我试图跟踪页面上的多个按钮,我设法通过多次复制粘贴来使用当前代码来完成它,但我想缩短它。 However, I can't figure out how I can do this.但是,我不知道如何做到这一点。

<script type="text/javascript">
  var button = document.getElementById('lp-pom-button-201');
  button.addEventListener(
    'click', 
    function() { 
      fbq('track', 'click to call', {
        tracking_number: 'Phone Number',
      });          
    },
    false
  );
</script>

You can use callback instead of recreating the function each time You can achieve it this way:您可以使用回调而不是每次都重新创建函数您可以通过以下方式实现:

 <script type="text/javascript"> var button = document.getElementById('lp-pom-button-201'); function myCallback() { fbq('track', 'click to call', { tracking_number: 'Phone Number', }); } button.addEventListener('click', myCallback, false); </script>

By this way you have only to bind the Event to aa button and centralized the management of it inside a single function.通过这种方式,您只需将事件绑定到一个按钮并将其集中管理在单个函数中。

More on callback: https://developer.mozilla.org/en-US/docs/Glossary/Callback_function更多关于回调: https : //developer.mozilla.org/en-US/docs/Glossary/Callback_function

Patrissol Kenfack answer certainly would be better than repeating the same function over and over. Patrissol Kenfack 的回答肯定比一遍又一遍地重复相同的功能要好。

To expand on his answer, you might consider using document.querySelectorAll and custom data attributes为了扩展他的答案,您可以考虑使用document.querySelectorAll自定义数据属性

Example:例子:

 function myCallback() { console.log(this.dataset.tracking) } document.querySelectorAll('[bind-onclick]').forEach((el) => { el.addEventListener('click', myCallback, false); })
 <div bind-onclick data-tracking="1">Click One</div> <div bind-onclick data-tracking="2">Click Two</div> <div bind-onclick data-tracking="3">Click Three</div>

All that said, you're appear to be using buttons (like you should; unlike I did above).综上所述,您似乎正在使用按钮(就像您应该的那样;与我上面所做的不同)。 Probably, should just use the onclick attribute instead of event listeners.也许,应该只使用onclick属性而不是事件侦听器。

 function buttonClicked(el) { console.log(el.dataset.tracking) }
 <button onclick="buttonClicked(this)" data-tracking="1">Click One</button> <button onclick="buttonClicked(this)" data-tracking="2">Click Two</button> <button onclick="buttonClicked(this)" data-tracking="3">Click Three</button>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM