2016-04-04 3 views
-1

Я по-прежнему новичок в кодировании, и я пытаюсь создать игру типа кликер. Я получаюФункция, которая не является функцией?

upgradecursor не является функцией

, когда я запускаю его на Chrome. Я действительно не понимаю проблему, поскольку у меня есть функция, называемая 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

В теге скрипта внутри тела вы устанавливаете updateecursor в true или false. В этот момент это уже не функция. Теперь он является логическим. – mcgraphix

ответ

2

У вас есть это:

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

Итак, когда вы начали с определения upgradecursor как функции, вы переписал его с булево, прежде чем когда-либо называли.

1

Проблема здесь:

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

Что, на самом деле, должно быть сделано?

Удалите его, и он должен работать.

6

Вы переписываете updateecursor с глобальной переменной после включения JavaScript.

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

Это код ошибки. Вам нужно переименовать эту переменную в нечто другое, чтобы избежать перезаписи функции.

Кроме того, вы должны определенно избегать объявления глобальных переменных, таких как, и посмотреть, как сделать ваш код более инкапсулированным/модульным.

-

Обновление на основе вашей цели: Если вы хотите только обновить курсор при определенном Прецедент, то это может быть полезно иметь конкретный обработчик щелчка, который будет запускать эту проверку внутри себя перед вызовом upgradeecursor. Например: -

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

Обратите внимание, как я использовал корпус верблюда для объявления своих функций и переменных? Убедитесь, что вы обновили объявления переменных в соответствии с моим корпусом. Это обычная практика. Вы можете прочитать больше о кодировании условности здесь: W3Schools JavaScript Style Guide

Я хотел бы отметить, слушатели должны быть прикреплены с помощью JavaScript (см DOM Event Listeners), но убедитесь, что вы обновить обработчик щелчка, чтобы соответствовать наше обновление, так как: -

<button type="button" onClick="onCursorClick()"/>Upgrade Cursor</button> 
+0

Спасибо !!! Но uhh я хотел отключить функцию upgradeecursor, если var cursorupgradecost больше, чем var cookie. – ChromeEagle

+0

@ChromeEagle Я обновил свой ответ с рекомендуемым подходом к тому, чего вы пытаетесь достичь. Удачи. – Shakespeare

Смежные вопросы