Javascript 未捕获引用错误:未定义calcMod

Javascript 未捕获引用错误:未定义calcMod,javascript,jquery,Javascript,Jquery,所以我正在创建这个D&D角色生成器应用程序,我有两个按钮:掷骰子和保留骰子。这是一种随机生成角色或输入自己统计信息的方法。我对代码进行了重构,以便这些函数在脚本末尾写入HTML。不过,现在我有一些先决条件来说明这些信息。例如,ket变量(灵巧度、体质等)取决于掷骰子还是保留骰子。我已经写了一个if/else声明,我认为这是在拖延时间。这是代码 //Variables var dex; var con; var str; var intel; var wis; var cha; var hitPo

所以我正在创建这个D&D角色生成器应用程序,我有两个按钮:掷骰子和保留骰子。这是一种随机生成角色或输入自己统计信息的方法。我对代码进行了重构,以便这些函数在脚本末尾写入HTML。不过,现在我有一些先决条件来说明这些信息。例如,ket变量(灵巧度、体质等)取决于掷骰子还是保留骰子。我已经写了一个if/else声明,我认为这是在拖延时间。这是代码

//Variables
var dex;
var con;
var str;
var intel;
var wis;
var cha;
var hitPoints;

if($("#RollTheDice").click()) {
    dex = statRoll();
    con = statRoll();
    str = statRoll();
    intel = statRoll();
    wis = statRoll();
    cha = statRoll();
}else if ($("KeepTheDice").click()) {
    dex = +document.getElementById("Dex").value;
    con = +document.getElementById("Con").value
    str = +document.getElementById("Strength").value;
    intel = +document.getElementById("Intel").value;
    wis = +document.getElementById("Wis").value;
    cha = +document.getElementById("Cha").value;
    hitPoints = +document.getElementById("HP").value;
}

//Modifiers
var dexmod = calcMod(dex);
var conmod = calcMod(con);
var strmod = calcMod(str);
var intelmod = calcMod(intel);
var wismod = calcMod(wis);
var chamod = calcMod(cha);
现在我知道我正在做的事情不太正确,但我不知道是什么。我想这是if/else语句

我得到的错误是

Uncaught ReferenceError: calcMod is not defined
Anonymous Function

如果有人愿意的话,我有点被困在这里。

看来简单的答案是,
calcMod()
没有在代码中定义(至少没有在调用它的上下文中定义)。另外,
*。click()
不会检查要单击的元素。您希望按钮调用一个OnClick()事件,该事件将调用一个函数,类似于:

 <button onclick="someFunction()">Click Here!</button>
点击这里!
您可以保留
if语句
,并计算调用按钮的名称(我相信)


最后,为了巩固我上面的注释,请尽量保持变量的名称相同。如果你想使用三个字母的缩写词,请在任何地方使用。它只是一种更好的形式。

在Javascript/jQuery中,您不需要使用
if
来对点击做出反应。您将一个函数传递给
。click()
,当有人单击该元素时,就会调用该函数

$("#RollTheDice").click(function() {
    dex = statRoll();
    con = statRoll();
    str = statRoll();
    intel = statRoll();
    wis = statRoll();
    cha = statRoll();
});
$("KeepTheDice").click(function() {
    dex = +document.getElementById("Dex").value;
    con = +document.getElementById("Con").value
    str = +document.getElementById("Strength").value;
    intel = +document.getElementById("Intel").value;
    wis = +document.getElementById("Wis").value;
    cha = +document.getElementById("Cha").value;
    hitPoints = +document.getElementById("HP").value;
});

这个错误对我来说似乎很清楚。您从未在任何地方定义过
calcMod
,或者至少在您试图调用它的地方没有定义过。请搜索。所以。。。您是否定义了calcMod()?如果是这样,代码是什么?您在哪里定义了calcMod函数?请注意:我不认为
If($(“#RollTheDice”).click()
做了您认为它做的事情。(:如果不带参数调用它,则
[…]此方法是[…]的快捷方式。触发器(“单击”)
,该调用的结果将始终是一个真实值)请为您的问题提供一个有用的标题,而不是“哦,让我解释一下”,我不鼓励使用内联事件处理程序,一方面,它迫使您用回调方法污染全局名称空间,另一方面,它使代码难以维护,实际上维护起来相当容易。但不管怎样,OP当前正在进行的.click()调用无论如何都不会做他认为会做的事情。我只是简单地提供了一个实际运行的替代方案。我尝试了按钮点击功能,它给了我所有statsAck的NaN!虽然没有错误,但将函数与click()调用内联是。。。这不是个好主意。如果必须的话,创建一个函数并在click()中调用它。@JesseWilliams这是jQuery的惯用。命名函数通常仅在您需要将同一方法绑定到不同的事件,或者需要能够独立于事件调用该函数时使用。这给了我生命值的问题,并将我的所有统计信息留给了NAN。几乎可以肯定,您的应用程序还有其他问题,因为您似乎不了解如何编写JS应用程序或如何使用jQuery的基本原则。但是,因为你只展示了这一小部分代码,所以我只能纠正这一点。好吧,如果你想要完整的代码,我很乐意把它给你看一下,但是,是的,我是n00b,我正在尽我所能自学javascript。没有必要发表评论。