Javascript GTM-跟踪最新输入点击值

Javascript GTM-跟踪最新输入点击值,javascript,jquery,google-tag-manager,Javascript,Jquery,Google Tag Manager,我的脚本 function() { var inputs = document.getElementsByTagName("input"), selectedRadios = []; for (var i = 0;i < inputs.length;i++) { if(inputs[i].type==="checkbox" && inputs[i].checked) { selectedRadi

我的脚本

function() {
  var inputs = document.getElementsByTagName("input"),
      selectedRadios = [];
  for (var i = 0;i < inputs.length;i++) {
    if(inputs[i].type==="checkbox" && inputs[i].checked) {
      selectedRadios.push(inputs[i].value);
    }
  }
  return selectedRadios;
} 
function(){
var inputs=document.getElementsByTagName(“输入”),
selectedRadios=[];
对于(变量i=0;i
此脚本返回所有选中按钮值的数组。因此,在我的例子中,如果我检查三个输入,数组将是例如:[167168169]

问题:数组是按升序数字顺序自动排序的,而我希望数组是根据第一个、第二个、第三个

为此,我以这种方式编辑了上面的脚本

function() {
  var inputs = document.getElementsByTagName("input"),
      selectedRadios = [],
      selectedRadios_latestchoice = [];

  // get all checkboxs selected
  for (var i = 0;i < inputs.length;i++) {
    if(inputs[i].type==="checkbox" && inputs[i].checked) {
      selectedRadios.push({filterValue : inputs[i].value, latestchoice : selectedRadios.length});
    }
  }

  // sort value by last choice
  selectedRadios.sort(function(a, b) {
        return a.latestchoice - b.latestchoice;
    }),
      
  // parse data 
  var obj = JSON.parse(selectedRadios),

    for (var s = 0;s < obj.length;s++) {
      selectedRadios_latestchoice.push(obj[s].filterValue);
  }

  // return last value of the array "selectedRadios_latestchoice"
  return selectedRadios_latestchoice[selectedRadios_latestchoice.length];
}
function(){
var inputs=document.getElementsByTagName(“输入”),
selectedRadios=[],
selectedRadios_latestchoice=[];
//选中所有复选框
对于(变量i=0;i
逻辑是:

  • 按下“输入值”和“array.length”, “array.length”告诉我输入值是第一次、第二次还是第三次单击的
  • 按array.length值对输入值进行排序
  • 解析json
  • 返回数组的最新值

我的尝试返回了一个错误。有什么帮助吗?

可能有一种更简单的方法可以做到这一点,但我能够使用forEach循环,并使用一个运行函数的嵌套事件侦听器。在函数中,我们通过检查
e.target.checked
的条件运行event.target,如果返回true,我们将值推送到数组中,然后,我们减少该数组,创建一个obj,将arr.length保存为属性,将当前值保存为。然后我们将该对象推送到最后一个数组中,以强制键自动排序

const checkbox=document.queryselectoral('.check'))
让val=[]
常量键对=[]
复选框。forEach((值)=>{
value.addEventListener('change',getPositionAndValue)
})
函数getPositionAndValue(e){
如果(例如,选中目标){
val.push(即目标值)
var结果=val.reduce(函数(结果,当前){
结果[val.length]=当前值;
返回结果;
}, {})
按键对。推送(结果)
console.log(keyValPair)
}
}