试图将我的变量重置为起始值javascript

时间:2018-05-27 20:10:43

标签: javascript variables

这实际上是我的第一个初学者项目。我自己编写了整个代码。它是通过3种不同的方法购买手机。您可以告诉程序自动购买所有手机和手机口罩所有的钱,手动逐个购买或输入您想要购买的手机和面具。与此同时,我设置了许多电话和面具,以及用户的银行余额。

问题来自eraseData函数。它根本不起作用。实际上,它的第一部分有效但第二部分我试图将变量重置为原始值并不起作用。

我使用此编辑器输入代码时遇到问题,因此我将使用Pastebin。

const PHONE_PRICE = 150.00;
const MASK_PRICE = 50;

var bankBalance = 1983;

var aPhones = 11;
var aMasks = 11;
var boughtPhones = 0;
var boughtMasks = 0;

function eraseData(){
    var bankBalance = 1800;

    var aPhones = 11;
    var aMasks = 11;
    var boughtPhones = 0;
    var boughtMasks = 0;
    var check = false;
    var quantity = 0;

    document.getElementById("money").innerHTML = "Money left: $" + bankBalance;
    document.getElementById("phones").innerHTML = "Amount of phones: " + boughtPhones;
    document.getElementById("masks").innerHTML = "Amount of phone masks: " + boughtMasks;
}

function updateData(){
    document.getElementById("money").innerHTML = "Money left: $" + bankBalance;
    document.getElementById("phones").innerHTML = "Amount of phones: " + boughtPhones;
    document.getElementById("masks").innerHTML = "Amount of phone masks: " + boughtMasks;
}

checkOptions();

function checkOptions(){
    var check = prompt("There is three different ways to buy a phone. (A)utomatically, (M)anually and by (Q)uantity. Choose one option.")
    if(check == "A"){
        buyPhoneA();
    }
    else if(check == "M"){
        buyPhoneM();
    }
    else if(check == "Q"){
        buyPhoneQ();
    }
    else{
        alert("That's not a valid option!");
    }
}

function buyPhoneA(){
    alert("With this option you automatically spend all your money ($" + bankBalance.toFixed(2) + ") and buy all available phones and phone masks! (take in notice that you can't buy one if you don't have money for the other!)");
    var check = prompt("Type I AGREE if you agree to use this option!");
    if(check == "I AGREE" && aPhones >= 1 && aMasks >= 1 && bankBalance >= 200.00){
            while(bankBalance >= PHONE_PRICE + MASK_PRICE){
                aPhones--;
                aMasks--;
                boughtPhones++;
                boughtMasks++;
                bankBalance = bankBalance - PHONE_PRICE - MASK_PRICE;
                updateData();
                var check = false;
        }
    }
    else{
        alert("Something went wrong! Either you didn't type I AGREE correctly, we don't have phones left or you don't have enough money!");
        console.log(aPhones + " phones left");
        console.log(aMasks + " masks left!");
        console.log(boughtMasks + " bought masks!");
        console.log(boughtPhones + " bought phones!");
        console.log(bankBalance + " money left in the bank");
        checkOptions();
    }
}

function buyPhoneM(){
    alert("With this options we will ask your over and over again to buy a phone! You can decline or agree to buying a new one! No accessories included");
    var check = prompt("Type I AGREE if you agree to do this option!");
    if(check == "I AGREE" && bankBalance >= 150.00 && aPhones >= 1){
        aPhones--;
        boughtPhones++;
        bankBalance = bankBalance - PHONE_PRICE;
        updateData(); 
        buyPhoneM();
        var check = false;
    }
    else{
        alert("Something went wrong! Either you didn't type I AGREE correctly, we don't have any phones left or you don't have enough money!");
        checkOptions();
    }
}

function buyPhoneQ(){
    var quantity = 0;
    alert("With this option you will be asked to input a number of phones and accessories you want to buy!");
    var check = prompt("Type I AGREE if you agree to use this option!");
    if(check == "I AGREE"){
        var quantity = prompt("Input a number of how many phones and accessories you want to buy!")
        if(bankBalance >= 200.00 && aPhones >= 1 && aMasks >= 1){
            aPhones + aPhones - quantity;
            aMasks = aMasks - quantity;
            bankBalance = bankBalance - ((PHONE_PRICE + MASK_PRICE) * 2);
            boughtPhones = boughtPhones + quantity;
            boughtMasks = boughtMasks + quantity;
            updateData();
            var check = false;
        }
        else{
            alert("Something went wrong! Either the message your typed is not a number, you don't have enough money, we don't have enough masks or phones!");
            buyPhoneQ();
        }
    }
}   

HTML:

<html>
<head>
    <link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
    <p id="money">Money left: $1800</p>
    <p id="phones">Amount of phones: 0</p>
    <p id="masks">Amount of phone masks: 0</p>
    <br><br>
    <button onclick="eraseData();">Erase Data</button>

    <script type="text/javascript" src="script.js"></script>

</body>

CSS对此并不重要.. (我不记得为什么要将脚本标签放在我的按钮标签下面,但我认为这是因为我的代码发生了一些奇怪的事情,直到我这样做才开始工作)

如果有人能提供帮助,我将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

您使用的全局变量和局部变量名称相同。 将函数变量重命名为与全局变量不同,或者在函数变量之前删除 var