繁体   English   中英

Javascript:单击div / form内的按钮不执行用于它的JavaScript?

[英]Javascript: Clicking a button inside a div/form not executing the javascript meant for it?

好吧,所以我在div内有一个按钮。 这是HTML的一部分:

<div class="row">
    <button type="button" id="submit">Send</button>
</div>

在此按钮之前,还有其他字段,例如名称,电子邮件和内容,这些字段都在表单内,其ID为“ contactForm”(位于类名称为“ container”的div中)。

我正在制作一个JS文件。 我正在尝试获取它,以便当用户输入所有信息(例如名称和内容)并点击提交时,它将console.log()名称。 JS部分看起来像这样:

// Listen for submit btn click
document.getElementById('contactForm').addEventListener('submit', submitForm);

function submitForm(e) {
    e.preventDefault();

    var name = document.getElementById('name').value;
    var email = document.getElementById('email').value;
    var message = document.getElementById('message').value;

    console.log(name);
};

是的,所以这部分对我来说很好,但是当我进入网站所在的本地主机时,我在名称,电子邮件和消息字段中放入了任意随机内容,然后单击了提交,则什么都没有发生。

调试器/控制台说

未捕获的TypeError:无法读取null的属性'addEventListener'

在第48行,这是:

document.getElementById('contactForm').addEventListener('submit', submitForm);

我今天开始学习js,这是一个非常新的东西,但是我找不到任何可以解决此问题的在线方法。 我发现有人建议我将大的JS部分放在document.ready函数中,以便它在加载所有内容后运行。 如果我尝试了,那就没有错误(就像第48行一样)。 它只是什么也没说,单击btn也不做任何事(例如,不显示我想要的名称)。

请帮助,谢谢。

您甚至可能在加载DOM之前尝试附加事件。 您可以为此使用多种解决方案。

  1. 将您的JavaScript代码放在标记后。

     <form id='contactForm'></form> <script>**** All your JavaScript goes here **** </script> 
  2. 将您的代码放在DOMContentLoaded事件中。

     document.addEventListener("DOMContentLoaded", function(event) { document.getElementById('contactForm').addEventListener('submit', submitForm); }); 

如果要使用“ Submit”事件,则必须制作一个具有<input type="submit">的表单,您的ID为'submit'的按钮不是有效的提交按钮。

简单来说,如果您希望在单击按钮时执行该函数,请使用以下命令:

document.getElementById('submit').addEventListener("click", function(){
    e.preventDefault();

    var name = document.getElementById('name').value;
    var email = document.getElementById('email').value;
    var message = document.getElementById('message').value;

    console.log(name);
});  

您是否检查过表单ID的拼写错误? 如果您阻止默认行为,也可以将“提交”按钮更改为简单的div并添加onclick事件处理程序。 像这样使用它:

 document.getElementById('submit').onclick=function(){document.getElementById('my-test-p').innerHTML='Submit was clicked'} 
  <button type="button" id="submit">Send</button> <p id='my-test-p'></p> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM