为什么表单 .submit() 在使用 jQuery 时有效,但在使用 vanilla JS 时无效?

Why does a form .submit() work when using jQuery but not when using vanilla JS?

我正在从我的 JavaScript 中删除所有 jQuery(建议这样做是为了最大限度地提高速度),还有最后一个问题。目标是 运行 提交时的 loadData 函数。

当 运行我的脚本运行时:

$('#form-container').submit(loadData);

但这不是:

 clickContainer = document.getElementById('form-container');
 clickContainer.addEventListener('submit', loadData());

我如何 运行 我的 loadData 函数与 vanilla JS 中提交的信息?

完整代码@https://github.com/ChaMbuna/Marvel-Map

谢谢!

解决方案: 将函数传递给 Javascript 的问题 addEventListener

传递 addEventListener 函数名称,而不是函数的 return 值。这样做:

clickContainer.addEventListener('submit', loadData);

传递给 addEventListener 您想要在 submit 事件触发时执行的函数的名称。立即将括号附加到函数名称会导致函数被执行,无论函数 returns 被传递给 addEventListener 方法而不是函数本身。

一个例外情况是函数 loadData 实际上 return 编辑了一个函数,而您希望 return 函数在 提交 [=31] 时执行=] 火灾。在那种情况下,你会想要像在 loadData() 中那样执行 loadData。啊,JavaScript的美女。