有没有办法在列表中获取多个元素内部文本来计算 GTM 中自定义变量的平均值?
Posted
技术标签:
【中文标题】有没有办法在列表中获取多个元素内部文本来计算 GTM 中自定义变量的平均值?【英文标题】:Is there a way to get multiple element inner text in a list to calculate the average for a custom variable in GTM? 【发布时间】:2022-01-15 10:38:38 【问题描述】:我正在抓取的网站有一个定期更改的等待时间列表。如果可能的话,我想在 Google Tag Manager 中有一个自定义 js 变量,当事件触发到 Google Analytics 时,我可以使用它来推送这些值的平均值。我在 R 中有代码可以每小时获取一次,但我被要求将其作为每个事件的自定义维度。我想知道是否有办法在 js 中做类似的事情。 这是R代码:
er_times <- ("url") %>%
read_html() %>%
html_nodes(xpath="//div[@class='time-info--right']/text()")
er_times <- as_list(er_times)
这给了我一个包含时间的 'time-info--right' 类的所有元素的内部文本列表,然后我有一个脚本来清理数据并获取平均等待时间。
所以我希望在 js 中获取一个列表或类似的数据类型,我可以在其中对其进行操作、转换为 int、取平均值,并在 GTM 中用作自定义变量。到目前为止,我已经尝试过:
Var wait_times = document.evaluate(‘/html/body/div[2]/div/main/div[2]/div/div[1]/div[2]/div[3]/div[1]/div[2]/div[1]/div[2]’, document, null, XPathResult.ANY_TYPE, null);
和
document.querySelectorAll(".time-info--right").innerText
这两个都给了我未定义的。
document.querySelectorAll(".time-info--right").innerText
只给我我需要的第一个项目。
没有使用 js 的经验,所以如果有人能告诉我这是否可行,那就太好了! 谢谢!
【问题讨论】:
【参考方案1】:类似的东西应该在 GTM 中工作(不使用 ES6+ 的构造)。关键是document.querySelectorAll
返回一个节点列表。您不能只访问该列表的 text 属性,您必须使用某种迭代器(例如 for
或 forEach
循环)对其进行迭代,以便访问每个单独节点的 text 属性。
getTimes = function()
var timeArray = [];
var times = document.querySelectorAll('.class-for-your-times');
times.forEach(time =>
var numberTime = parseInt(time.innerText);
timeArray.push(numberTime);
);
return timeArray
【讨论】:
谢谢!!这帮助了很多!以上是关于有没有办法在列表中获取多个元素内部文本来计算 GTM 中自定义变量的平均值?的主要内容,如果未能解决你的问题,请参考以下文章
CSS:有没有办法在每个列表元素之前垂直对齐数字/项目符号?
CSS:有没有办法在每个列表元素之前垂直对齐数字/项目符号?