2016-05-04 33 views
-3

このD & Dキャラクタージェネレーターアプリを作成しています。私はロールスロイスとダイスを2つ持っています。これは、ランダムにキャラクタを生成するか、自分の統計を入力する方法です。これらの関数がスクリプトの最後にHTMLに書き込むように、私は自分のコードをリファクタリングしました。しかし、私は情報が配置されるための前提条件があります。例えば、ケツ変数(敏捷性、憲法など)は、あなたがサイコロを振るかどうか、あるいはサイコロを保つかどうかによって異なります。私は事を投げ捨てていると思うif/else文を入れました。ここにコードがあります。キャッチされていないReferenceError:calcModが定義されていません

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

です。

+6

エラーはかなりわかりやすいようです。どこでも 'calcMod'を定義することは決してありません。少なくとも、あなたが呼び出す場所は決まっていません。 [Uncaught ReferenceError](https://stackoverflow.com/search?q=%5Bjavascript%5D+Uncaught+ReferenceError)を検索してください。 –

+1

だから...あなたはcalcMod()を定義しましたか?もしそうなら、コードは何ですか? –

+1

calcMod関数をどこで定義しましたか? – Mojtaba

答えて

-1

簡単な答えは、calcMod()がコード内に定義されていないように見えます(少なくとも呼び出された場所のコンテキストではない)。また、*.click()は、その要素がクリックされていないかチェックしません。あなたは(私は信じている)if-statementを維持し、呼び出しボタンの名前のために評価することができます

<button onclick="someFunction()">Click Here!</button> 

:あなたは、関数を呼び出しますあなたのボタンで呼び出されるのOnClick()イベント、のような何かをしたいです。

最後に、上記のメモを統合するだけで、同じ名前の変数を保持してください。それがあなたが使いたいものなら、どこにでも3文字の略語をつけてください。それはちょうど良い形です。

+0

インラインイベントハンドラの使用をお勧めしません。一方では、コールバックを使ってグローバル名前空間を汚染させます一方で、コードを維持することが困難になります。 –

+0

実際には維持管理が簡単です。しかし、関係なく、OPが今作っている.click()コールは、それが何となくやると思っていることをするつもりはありません。私は単に実際に機能する代替案を提供していただけでした。 –

+0

ボタンonclick関数を試してみました。すべての統計情報がNaNになっています – user3605374

1

ifを使用して、Javascript/jQueryのクリックに反応することはありません。関数を.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; 
}); 
+0

Ack!間違ってはいませんが、click()コールで関数をインラインにするのはちょっと良いことです。関数を作成し、必要な場合はclick()で呼び出します。 –

+3

@JesseWilliamsこれはjQueryを使用するのが非常に慣用的です。名前付き関数は、同じメソッドを異なるイベントにバインドする必要がある場合、またはイベントとは独立して関数を呼び出す必要がある場合にのみ使用されます。 – Barmar

+0

これは私にhitPointsに関する問題を与え、NaNですべての統計を残しました。 – user3605374

関連する問題