我还是新编码,我正在尝试制作一个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>
答案 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>
究竟应该做什么?
删除它,它应该工作。