一个不是函数的函数?

-1 html javascript

我还是新编码,我正在尝试制作一个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>
Run Code Online (Sandbox Code Playgroud)

Sha*_*are 6

包含JavaScript后,您将使用全局变量覆盖upgradecursor.

<script>
if (cursorupgradecost > cookie) {
    upgradecursor = false;
} else {
    upgradecursor = true;
}
</script>
Run Code Online (Sandbox Code Playgroud)

这是违法的代码.您需要将此变量重命名为其他内容以避免覆盖该函数.

此外,您绝对应该避免声明这样的全局变量,并考虑使您的代码更加封装/模块化.

-

根据您的目标进行更新:如果您只想在给定某个用例的情况下升级游标,那么在调用upgradecursor之前,拥有一个特定的单击处理程序可能会很有用,该处理程序将自行运行此检查.例如: -

function onCursorClick() {
    if (cursorCost > cookie) {
        // do something
    } else {
        upgradeCursor();
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意我是如何使用驼峰套管来声明我的函数和变量的?确保更新变量声明以匹配我的外壳.这是常见的做法.您可以在此处阅读有关编码约定的更多信息:W3Schools JavaScript样式指南

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

<button type="button" onClick="onCursorClick()"/>Upgrade Cursor</button>
Run Code Online (Sandbox Code Playgroud)