Javascript 使用JS向动态生成的Squarespace新闻稿块添加隐藏表单字段
我试图在我的主页新闻稿注册中添加一个隐藏字段,这样我就可以在Mailchimp中跟踪注册来源 这是我正在注入页面的代码,但它抛出了一个“UncaughtTypeError:undefined不是函数”错误,我不知道为什么 这是否与表单的其余部分在页面加载后呈现这一事实有关?(这就是为什么我使用类名来定位表单)Javascript 使用JS向动态生成的Squarespace新闻稿块添加隐藏表单字段,javascript,mailchimp,squarespace,Javascript,Mailchimp,Squarespace,我试图在我的主页新闻稿注册中添加一个隐藏字段,这样我就可以在Mailchimp中跟踪注册来源 这是我正在注入页面的代码,但它抛出了一个“UncaughtTypeError:undefined不是函数”错误,我不知道为什么 这是否与表单的其余部分在页面加载后呈现这一事实有关?(这就是为什么我使用类名来定位表单) var formcontainer=document.getElementsByClassName('newsletter-form'); var input=document.crea
var formcontainer=document.getElementsByClassName('newsletter-form');
var input=document.createElement('input');
input.type='hidden';
input.name='SOURCE';
input.id='SOURCE';
input.value='homepage';
formcontainer.appendChild(输入);
感谢阅读:)
文档。getElementsByClassName
返回一个数组,因此formcontainer
包含一个元素数组(即使只有一个匹配的元素)
可能是formcontainer.appendChild(输入)
失败,因为formcontainer
数组没有名为appendInput
的函数
尝试更改行formcontainer.appendChild(输入)
读取formcontainer[0].appendChild(输入)
并查看这是否修复了错误
您还可以使用Chrome的Inspector或Firefox开发工具在代码中设置断点。要调试这样的错误,我建议将断点放在代码的第一行,然后一次一行地执行,直到错误发生。这将把它缩小到一行,这样您就不用大海捞针了:)只需用简单的方法,并使用HTML将隐藏字段添加到表单中即可:
如果出于某种原因您必须使用JavaScript,请将此脚本放在关闭标记的前面:
<script language="JavaScript"> document.getElementById('newsletter-form').innerHTML += "<input type='hidden' value='homepage' />";
</script>
document.getElementById('newsletter-form').innerHTML+=“”;
另外,将id=“newsletter form”
属性添加到您的
标记中
这将使用指定的id
将指定的HTML代码添加到表单中
我希望我能帮助你:)修复了我做的两件事:) (1) 在运行脚本之前等待DOM加载
(2) 迭代getElementsByClassName以获取数组中的第一项。{不必费心循环,因为我每页只有一个表单}
<script language="JavaScript">
document.addEventListener("DOMContentLoaded", theDomHasLoaded, false);
function theDomHasLoaded(e) {
var formelements = document.getElementsByClassName('newsletter-form');
formelements[0].innerHTML += "<input name='SOURCE' id='SOURCE' type='hidden' value='homepage' />";
}
</script>
文件。添加的文件列表(“DOMContentLoaded”,domHasLoaded,false);
函数已加载(e){
var formelements=document.getElementsByClassName('newsletter-form');
formelements[0]。innerHTML+=“”;
}
谢谢!但问题是我不能直接控制表单的内容。。。它由Squarespace使用脚本生成。你知道我如何添加id吗?或者改为以表单的类为目标?``谢谢,但不幸的是,我仍然会遇到同样的错误。断点总是让我迷惑,我将尝试:)
<script language="JavaScript">
document.addEventListener("DOMContentLoaded", theDomHasLoaded, false);
function theDomHasLoaded(e) {
var formelements = document.getElementsByClassName('newsletter-form');
formelements[0].innerHTML += "<input name='SOURCE' id='SOURCE' type='hidden' value='homepage' />";
}
</script>