【问题标题】:getElementsByClassName - Undefined ReturngetElementsByClassName - 未定义的返回
【发布时间】:2017-10-24 07:55:44
【问题描述】:
我在 Google 跟踪代码管理器中使用的 getElementsByClassName 函数存在问题。
我将需要在我的客户表单中捕获一个输入字段值,并且我正在隔离类名并在我的自定义 JS 中使用它,但是我只会得到 Undefined 回来。
我正在使用的 JS 如下,我还创建了一个 gtm.formsubmit 事件,但我认为该事件在它有时间听用户输入之前就触发了,这甚至可能吗?
function() {
var inputField = document.getElementsByClassName("wpcf7-form");
return inputField.value || "";
}
谢谢!
【问题讨论】:
标签:
google-tag-manager
getelementsbyclassname
【解决方案1】:
即使类 wpcf7-form 只有一个元素,对getElementsByClassName 的调用也会返回一个元素数组(在这种情况下是单个元素)。由于数组没有“值”属性,因此您会得到“未定义”。
如果你有理由确定类中只有一个元素你可以做
...
var inputField = document.getElementsByClassName("wpcf7-form");
return inputField[0].value || "";
...
因为单个元素将始终位于索引 0。在这种情况下,在 Google 跟踪代码管理器中使用 DOM 类型变量并将选择方法设置为“CSS 选择器”会更容易。这将返回您的类的第一个元素(如果不存在,则返回未定义的)。