javascript中的函数调用问题

时间:2013-11-16 22:01:29

标签: javascript html

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

<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>

3 个答案:

答案 0 :(得分:2)

你应该把你的script放在头部而不是body,因为你正在使用jQuery的DOM就绪处理程序。

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

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

这有以下目的 -

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