Вызов имени функции и добавленной переменной - PullRequest
0 голосов
/ 02 сентября 2018

Как я могу добавить переменную к имени функции? Будет несколько функций, поэтому я создал счетчик, который увеличивается. После добавления счетчика должна быть выполнена функция newArea1, затем функция newAre2 и т. Д. Я прошу вас о помощи почти весь день. Спасибо заранее за вашу помощь.

    const home = document.querySelector("#home");
const nickName = document.querySelector(".nick-name");
const startBtn = document.querySelector(".startBtn");
const info = document.querySelector(".info");
let nickArea = document.querySelector(".nick-area");
let moneyArea = document.querySelector(".money-area");
const amountMoney = document.getElementById("amount-money");
const sendBtn = document.getElementById("send-money");
const infoWin = document.querySelector(".info-win");
const gameArea = document.getElementById("game-area");
const amoutWin = document.getElementById("amountwin");
let winArea = document.querySelector(".mywin");
const receive = document.getElementById("receive");
const area = document.querySelector(".area");
const endGameArea = document.getElementById("endgame");
const resetGame = document.getElementById("resetGame");
let currentFunds = 0;
let counter = 1;

//Investors
const InvestorNameArea = document.querySelector(".investor-name h2");
const InvestorPhotoArea = document.querySelector(".investor-image img");
const InvestorDealArea = document.querySelector(".investor-image p");
let InvestorName = ["Bill Gates", "Mark Zuckerberg"];
let InvestorPhoto = ["img/investors/billgates.jpg", "img/investors/markzuckerberg.jpg"];
let InvestorDeal = ["Lorem ipsum dolor sit amet consectetur adipisicing elit. Totam fuga quae asperiores nemo veritatis, cumque, nihil minus hic adipisci, ut dolor alias amet obcaecati. In ipsa tenetur laboriosam impedit. Consequatur!", "Lorem ipsum dolor sit amet consectetur adipisicing elit. Totam fuga quae asperiores nemo veritatis, cumque, nihil minus hic adipisci, ut dolor alias amet obcaecati. In ipsa tenetur laboriosam impedit. Consequatur!"];


    const endGame = (totalpayment,nick,currentFunds,payment) => {
    document.getElementById("totalearnings").innerHTML = `Total Earnings: ${totalpayment}$`;
    gameArea.style = "display: none";
    endGameArea.style = "display: inline-block";

    resetGame.addEventListener("click", function() {
        currentFunds = 0;
        payment = 0;
        counter = 0;
        newArea(nick, currentFunds, payment);
    })
}

    const newArea2 = (totalpayment, nick, currentFunds) => {
        amountMoney.value = "";
        InvestorNameArea.innerHTML = InvestorName[1];
        InvestorPhotoArea.setAttribute("src", InvestorPhoto[1]);
        InvestorDealArea.innerHTML = InvestorDeal[1];
        currentFunds = totalpayment;
        winArea.style = "display: none";
        gameArea.style = "display: inline-block";
        area.style = "display: inline-block";
        sendBtn.addEventListener("click", function() {
            sendMoney(nick, currentFunds);
        });
    }

const paymentMoney = (nick, currentFunds, payment) => {
    winArea.style = "display: none";
    let totalpayment = currentFunds + payment;
    moneyArea.innerHTML = `Your money: ${totalpayment}$`;
    if(totalpayment == 0) {
    endGame(totalpayment, nick, currentFunds, payment);
    }
    else {
        newArea2(totalpayment, nick, currentFunds, payment);
    }

}

const sendMoney = (nick, currentFunds) => {
    infoWin.style = "display: none";
    if(amountMoney.value > currentFunds || amountMoney.value < 1) {
        infoWin.innerHTML = "You do not have that much money!";
        infoWin.style = "display: inline-block";
    }

    else {
        infoWin.style = "display: none";
        currentFunds = currentFunds - amountMoney.value;
        moneyArea.innerHTML = `Your money: ${currentFunds}$`;
        let rate = (Math.random() * (0 - 2) + 2).toFixed(1);
        let payment = Math.round(amountMoney.value * rate);
        amoutWin.innerHTML = `Investment: ${payment}$`;
        winArea.style = "display: inline-block";
        area.style = "display: none";

        receive.addEventListener("click", function() {
            paymentMoney(nick, currentFunds, payment, winArea);
        });
    }
}

const newArea = (nick) => {
    endGameArea.style = "display: none";
    endGameArea.style = "display: none";
    amountMoney.value = "";
    currentFunds = 100000;
    nickArea.innerHTML = `Your name: ${nick}`;
    moneyArea.innerHTML = `Your money: ${currentFunds}$`;
    InvestorNameArea.innerHTML = InvestorName[0];
    InvestorPhotoArea.setAttribute("src", InvestorPhoto[0]);
    InvestorDealArea.innerHTML = InvestorDeal[0];
    counter++;
    winArea.style = "display: none";
    gameArea.style = "display: inline-block";
    area.style = "display: inline-block";
    sendBtn.addEventListener("click", function() {
        sendMoney(nick, currentFunds);
    });
}

const startGame = () => {
    if(nickName.value.length < 1) {
        info.innerHTML = "You must write your name!";
        info.style = "opacity: 1";
    }

    else if(nickName.value.length > 15) {
        info.innerHTML = "Your name is too long!";
        info.style = "opacity: 1";
    }

    else {
        const nick = nickName.value;
        home.classList.add("hide");
        endGameArea.classList.add("hide");
        newArea(nick);
    }
}

startBtn.addEventListener("click", startGame);

1 Ответ

0 голосов
/ 02 сентября 2018

Может быть, это поможет: Каждая функция также является методом объекта окна. для вызова нумерованной функции вы можете написать: window["newArea"+counter]()

function newArea1(){
  return "this is newArea1 function";
}

function newArea2(){
  return "this is newArea2 function";
}

let counter = 1;

console.log(window["newArea"+counter]());

counter++;

console.log(window["newArea"+counter]())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...