Попытка сбросить мои переменные к их начальному значению JavaScript - PullRequest
0 голосов
/ 27 мая 2018

Это мой первый проект для начинающих.Я написал весь код сам.Речь идет о покупке телефонов через 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 голосов
/ 27 мая 2018

Вы использовали одно и то же имя глобальной переменной и локальной переменной.Либо переименуйте переменную функции, отличную от глобальных переменных, либо удалите var перед переменной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...