GTM-跟踪最新输入点击值



我的脚本

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;
} 

此脚本返回一个包含所有选中按钮值的数组。因此,在我的情况下,如果我检查三个输入,数组将是例如:[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];
}

逻辑是:

  • 按下";输入值";以及";array.length";,";array.length";告诉我输入值是第一次、第二次还是第三次点击的
  • 根据array.length值对输入值进行排序
  • 解析json
  • 返回数组的最新值

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

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

const checkboxes = document.querySelectorAll('.check')
let val = []
const keyValPair = []
checkboxes.forEach((value) => {
value.addEventListener('change', getPositionAndValue)
})
function getPositionAndValue(e) {
if (e.target.checked) {
val.push(e.target.value)
var result = val.reduce(function(result, curr) {
result[val.length] = curr;
return result;
}, {})
keyValPair.push(result)
console.log(keyValPair)
}
}
<input class="check" value="167" type="checkbox">
<input class="check" value="168" type="checkbox">
<input class="check" value="169" type="checkbox">
<input class="check" value="170" type="checkbox">
<input class="check" value="171" type="checkbox">

最新更新