调用函数的名称并添加变量

时间:2018-09-02 10:38:59

标签: javascript function variables

如何在函数名称中添加变量? 将有几个函数,这就是为什么我创建一个递增的计数器的原因。添加计数器后,将执行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 :(得分:0)

也许这可以帮助: 每个函数也是window对象的方法。 为了调用一个编号函数,您可以编写: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]())

相关问题