一个不是函数的函数?

时间:2016-04-04 14:38:36

标签: javascript html

我还是新编码,我正在尝试制作一个cookie clicker类型的游戏。我得到了

  

upgradecursor不是函数

当我在Chrome上运行它时。我没有真正理解这个问题,因为我有一个名为upgradecursor的函数。 请帮忙! :(

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

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

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

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

    // Put it back with the new -10'd value
    textField.value = currentValue;
	
	//change the cost of the upgrade
	cursorupgradecost = cursorupgradecost * 1.5;
	
	//Upgrade the cursor
	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 个答案:

答案 0 :(得分: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

我想指出应该通过JavaScript附加听众(请参阅DOM Event Listeners),但请确保更新点击处理程序以匹配我们的更新,如下所示: -

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

答案 1 :(得分:2)

你有这个:

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

因此,当您开始将upgradecursor定义为函数时,在调用之前用布尔值覆盖它。

答案 2 :(得分:1)

问题在于:

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

究竟应该做什么?

删除它,它应该工作。