为什么我的javascript函数被完全忽略了?(非常简单的例子)

为什么我的javascript函数被完全忽略了?(非常简单的例子),javascript,jquery,Javascript,Jquery,我有两个按钮。保存和撤消。它们执行javascript,最后调用resetButtons(),这意味着在用户输入发生任何其他更改之前禁用按钮。这段代码已经运行了一年多了,但是在实现一些新特性的同时,这段代码已经失效了 下面是一段直接的代码: function undo(){ var r = confirm("Are you sure you want to cancel your inputs?"); if (r == true) { setLoadedValue

我有两个按钮。保存和撤消。它们执行javascript,最后调用
resetButtons()
,这意味着在用户输入发生任何其他更改之前禁用按钮。这段代码已经运行了一年多了,但是在实现一些新特性的同时,这段代码已经失效了

下面是一段直接的代码:

function undo(){
    var r = confirm("Are you sure you want to cancel your inputs?");
    if (r == true) {
        setLoadedValues();  //calls in the cached previous values
        updateAllBoxValues();  //updates view
        console.log("before resetting buttons");
        resetButtons();
        console.log("after resetting buttons");
    }
}

function resetButtons(){
    console.log("resetting buttons");
    $(".save").addClass("disabled");
    $('.save').attr('disabled', 'disabled');
    $(".undo").addClass('disabled');
    $('.undo').attr('disabled', 'disabled');
    console.log("done resetting buttons");
}
这将提供以下输出:

before resetting buttons
after resetting buttons

我怀疑括号中有一些格式错误,但这是一段直接的代码,如果
undo()
有效,那么
resetButtons()
也应该有效,对吗?另外,如果是这样的话,我应该得到一个未定义的函数,或者一个未指定的输入端或类似的东西。单击“保存”按钮时,对resetButtons的调用也被忽略。我迷路了。帮助?

您的代码似乎很好,您肯定在其他地方出现了其他错误(例如名为这两个函数的函数)

顺便说一下,我建议使用jQuery的“prop”方法来更改禁用的属性:

$('foo').prop('disabled', true);

$('foo').prop('disabled', false);

您有一个重复的函数定义。重命名其中一个。

尝试触发console中的resetButton()函数,如果出现问题,它将返回该函数。在随机控制台中测试它会得到它应该拥有的所有日志,但我不能保证选择器是正确的。错误可能在代码的其他地方。

@kiks73我认为问题在于
resetButtons()
似乎没有运行。控制台日志显示函数调用前后记录的行,但不显示函数本身中的任何一行。在不同的上下文中,函数是按照您发布的方式定义的,还是彼此远离?你能在plunkr/JSFIDLE中重新创建该行为吗?在它调用
resetButtons
之前设置一个断点,然后在控制台中键入
resetButtons
,看看它显示了什么。我怀疑你在某处重新定义了该函数。很好的一个!)调用
resetButtons
时没有控制台日志,该函数没有日志输出,没有未定义的错误。检查代码中是否有另一个同名函数可以在同一范围内。@KjetilNordin我已经修改了第一段,以反映这是一个提示……我已经删除了我的否决票。我仍然认为你从评论中盗取了真实的答案,所以我将把答案归功于其他人;)这也是一个非常好的答案,也是一个更通用的方法来解决我的症状中可能出现的一些问题。实际上,我不知道我可以从控制台调用函数(我主要使用Chrome的调试和inspectin工具),但它显示了函数,显然不是我试图调用的:)