2016-04-04 3 views
-1

私はまだコーディングが新しく、私はクッキークリッカータイプのゲームを作ろうとしています。私はChromeでそれを実行したときに関数ではない関数ですか?

upgradecursorが

関数ではありません取得します。私はupgradecursorと呼ばれる機能を持っているので、実際に問題を理解していません。 Plsヘルプ! :(

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <title> Test </title> 
 
\t <script> 
 
\t //List of variables 
 
\t var cookie = 0; 
 
\t var cursor = 1; 
 
\t var cursorupgradecost = 10; 
 

 
function addcookie(){ 
 
    var textField = document.getElementById("textField"); 
 
    var currentValue = parseInt(textField.value); 
 
\t cookie = cookie + cursor; 
 
\t // Add one 
 
    currentValue = currentValue + cursor; 
 

 
    // Put it back with the new +1'd value 
 
    textField.value = currentValue;} 
 

 
function upgradecursor(){ 
 
\t var textField = document.getElementById("textField"); 
 
    var currentValue = parseInt(textField.value); 
 
\t cookie = cookie - cursorupgradecost; \t 
 
\t // Minus one 
 
    currentValue = currentValue - cursorupgradecost; 
 

 
    // Put it back with the new -10'd value 
 
    textField.value = currentValue; 
 
\t 
 
\t //change the cost of the upgrade 
 
\t cursorupgradecost = cursorupgradecost * 1.5; 
 
\t 
 
\t //Upgrade the cursor 
 
\t cursor = cursor + 1; 
 
} 
 

 
</script> 
 
</head> 
 
<body> 
 
<script> 
 
if (cursorupgradecost > cookie){ 
 
upgradecursor = false;} 
 
else{ 
 
upgradecursor = true;} 
 
</script> 
 

 
<button type ="button" onClick = "upgradecursor()"/>Upgrade Cursor </button> 
 
<input type="text" value="0" disabled name="lvl"> 
 
<br> 
 
<button type="button" onClick="addcookie()"/>Add Cookie</button> 
 
<input type="button" value="Cookies" disabled name="clicker"> 
 

 
<input type="text" value="0" id="textField" readonly/> 
 

 
</body> 
 
</html>

+3

body内のスクリプトタグでは、upgradecursorをtrueまたはfalseに設定しています。その時点では、もはや関数ではありません。今はブール値です。 – mcgraphix

答えて

2

あなたがこの持っている:あなたは関数としてupgradecursorを定義することによって始まった間、あなたはそれを呼ばれる前に、そう

if (cursorupgradecost > cookie){ 
upgradecursor = false;} 
else{ 
upgradecursor = true;} 

を、あなたはブール値でそれを上書きしました。

1

問題はここにあります。

<script> 
if (cursorupgradecost > cookie){ 
upgradecursor = false;} 
else{ 
upgradecursor = true;} 
</script> 

それはどうしたらいいのですか?

削除すると正常に動作するはずです。

6

JavaScriptを組み込んだ後で、upgradecursorをグローバル変数で上書きしています。

<script> 
if (cursorupgradecost > cookie) { 
    upgradecursor = false; 
} else { 
    upgradecursor = true; 
} 
</script> 

これは問題のコードです。関数の上書きを避けるために、この変数の名前を変更する必要があります。

さらに、は、のようなグローバル変数の宣言を避け、コードをよりカプセル化/モジュール化してください。あなたが唯一の特定のユースケース与えられたカーソルをアップグレードしたい場合は、それ自体の内部でこのチェックを実行する特定のクリックハンドラを有することが有用であるかもしれない:あなたの目的に基づいて

アップデート -

upgradecursorを呼び出す前に。例: -

function onCursorClick() { 
    if (cursorCost > cookie) { 
     // do something 
    } else { 
     upgradeCursor(); 
    } 
} 

私の機能と変数を宣言するためにキャメルケースをどのように使用していますか?私のケースに合わせて変数宣言を更新してください。これは一般的な方法です。

- :あなたがここにコーディング規則の詳細を読むことができます:W3Schools JavaScript Style Guide

私は(DOM Event Listenersを参照)JavaScriptを介して結合しているが、そうのように、あなたが私たちの更新に合わせて、クリックハンドラを更新してくださいする必要があるリスナーを指摘したいと思います

+0

ありがとうございました!しかし、私は、var cursorupgradecostがvar cookie以上のものであれば、upgradecursor関数を無効にしたいと思っていました。 – ChromeEagle

+0

@ChromeEagle達成しようとしていることに対する推奨アプローチで私の答えを更新しました。がんばろう。 – Shakespeare

関連する問題