JavaScript 中的函数调用问题

function call issue in javascript

本文关键字:问题 函数调用 JavaScript      更新时间:2023-09-26

我想调用一个函数,但是我收到错误"JavaScript运行时错误:'a'未定义"。我无法更改删除"$(",因为它会破坏我的其他代码,我需要能够在函数 a 中获取 var n。

<input name="searchTxt" type="text" maxlength="512" id="searchTxt" class="searchField"/>
<input type="button" onclick="a()" name="add" value="Add input field" />
<script type="text/javascript">
 $(function a ()  { 
  var n = document.getElementById("searchTxt").value;
});
</script>
你应该

把你的script放在头上而不是body,因为你无论如何都在使用jQuery的DOM就绪处理程序。

此外,您可能应该提取命名函数表达式。

<script>
    function a() {
        var n = document.getElementById("searchTxt").value;
    }
    $(a);
</script>

虽然上面的答案已经解决了主要问题,但我根本不喜欢 HTML 中的任何 JavaScript,甚至不喜欢调用。我可以建议以下编辑吗

$(function a() {
    $("input[name='add']").on("click", function() {
        var n = $("#searchTxt").val();
    });
});

这样做的目的如下:

  1. 您可以在 HTML 和 CSS 加载后安全地调用所有脚本(推荐)。
  2. 仅当事件存在并加载时,才将事件绑定到元素,下降回来没有任何错误。
  3. 不依赖于定义的任何范围,因此您永远不会获得函数未定义的问题。
  4. 将 JavaScript 与 HTML 完全隔离(只是一个选择,而不是强制性)。

当你将一个函数传递给 jQuery 的主函数时,jQuery 会绑定这个函数,以便在 DOM 完成加载时执行,但这个函数在全局范围内不可访问。

如果你已经使用过jQuery,你可以尝试这样的东西:

<script>
    function a(){
          var n = $("#searchTxt").val();
    }
<script>