Javascript 函数在被另一个函数调用时不会激发

Javascript 函数在被另一个函数调用时不会激发,javascript,html,Javascript,Html,温柔一点,我对JavaScript非常陌生: 我正在制作一款21点游戏——一些关于CodeAcademy的教程涵盖了一些基础知识,所以我试图自己再进一步。作为打印每个玩家姓名的前奏,我创建了一个函数(showNames()),将“砰,砰!”打印到我的“hud”部分。当我(临时)将showNames()分配给我的“点击”按钮的onclick功能时,这一点就起作用了。但是,当我尝试从我的setupGame()函数调用showNames()时,它不会启动。我哪里做错了?代码如下: index.html

温柔一点,我对JavaScript非常陌生:

我正在制作一款21点游戏——一些关于CodeAcademy的教程涵盖了一些基础知识,所以我试图自己再进一步。作为打印每个玩家姓名的前奏,我创建了一个函数(
showNames()
),将“砰,砰!”打印到我的“hud”部分。当我(临时)将
showNames()
分配给我的“点击”按钮的
onclick
功能时,这一点就起作用了。但是,当我尝试从我的
setupGame()
函数调用
showNames()
时,它不会启动。我哪里做错了?代码如下:

index.html:

<!DOCTYPE html>
<html>
    <head>
        <title>Awesome Blackjack!</title>
        <link rel="stylesheet" type="text/css" href="common/css/default.css" />
        <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro|Galindo|Duru+Sans|Jolly+Lodger|McLaren' rel='stylesheet' type='text/css'>
        <script type="text/javascript" src="common/js/blackjack_controller.js"></script>
        <script type="text/javascript">
            function play() {
                if (setupGame()) {
                    showNames();
                    alert("Pow");
                } else {
                    alert("You must enter a number between 1 and 4.");
                }
            }
        </script>
    </head>
    <body>
        <div id="wrapper">
            <section id="hud">
                <div class="player" id="player1">
                    <div class="playerName">Drew</div>
                    <div class="playerScore">21</div>
                </div>
                <div class="player">
                    <div class="playerName">Dalton</div>
                    <div class="playerScore">12</div>
                </div>
                <div class="player">
                    <div class="playerName">Lindsey</div>
                    <div class="playerScore">23</div>
                </div>
                <div class="player">
                    <div class="playerName">Steven</div>
                    <div class="playerScore">9</div>
                </div>
            </section>
            <section id="table">
                <div id="controls">
                    <input type="button" name="start" id="start" value="Start" class="control start" onclick="play()"; />
                    <input type="button" name="hit" id="hit" value="Hit" class="control hit" onclick="showNames()"; />
                    <input type="button" name="stay" id="stay" value="Stay" class="control stay" />
                </div>
                <div id="dealer">
                    <div id="dealerName">Dealer</div>
                    <div id="dealerScore">19</div>
                    <div id="playArea">
                        <div class="card dealer club first">9</div>
                        <div class="card dealer club">9</div>
                        <div class="card dealer club">9</div>
                        <div class="card dealer heart king"></div>
                    </div>
                </div>
                <div id="playerWrapper">
                    <div class="playerArea a">
                        <div class="playerAreaName">Drew</div>
                        <div class="card club first">9</div>
                        <div class="card club">9</div>
                        <div class="card club">9</div>
                        <div class="card heart king"></div>
                    </div>
                    <div class="playerArea b">
                        <div class="playerAreaName">Drew</div>
                    </div>
                    <div class="playerArea c">
                        <div class="playerAreaName">Drew</div>
                    </div>
                    <div class="playerArea d">
                        <div class="playerAreaName">Drew</div>
                    </div>
                </div>
            </section>
        </div>
    </body>
</html>
var numberOfPlayer = 0;
var players = new Array();
var name;
var names;

// Methods
function showNames() {
    document.getElementById("hud").innerHTML = "Bang, Boom!";
};

function setupGame() {
    numberOfPlayers = prompt("Please enter the number of players (up to 4).");
    if (numberOfPlayers > 0 && numberOfPlayers <= 4) {
        for (var i = 1; i <= numberOfPlayers; i++) {
            players[i] = new Player(prompt("Enter a name for player " + i + "."));
        }

        for (var i = 1; i <= numberOfPlayers; i++) {
            names += players[i].printName();
        }

        return true;
    }

    return false;
}

// Classes
function Player(name) {
    this.name = name;
    this.cards = new Array();
    this.score = 0;

    function printName() {
        return this.name + " ";
    }
}

真棒的21点!
函数播放(){
if(setupGame()){
showNames();
警报(“Pow”);
}否则{
警报(“您必须输入一个介于1和4之间的数字”);
}
}
德鲁
21
道尔顿
12
林赛
23
史蒂文
9
经销商
19
9
9
9
德鲁
9
9
9
德鲁
德鲁
德鲁
blackjack\u controller.js:

<!DOCTYPE html>
<html>
    <head>
        <title>Awesome Blackjack!</title>
        <link rel="stylesheet" type="text/css" href="common/css/default.css" />
        <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro|Galindo|Duru+Sans|Jolly+Lodger|McLaren' rel='stylesheet' type='text/css'>
        <script type="text/javascript" src="common/js/blackjack_controller.js"></script>
        <script type="text/javascript">
            function play() {
                if (setupGame()) {
                    showNames();
                    alert("Pow");
                } else {
                    alert("You must enter a number between 1 and 4.");
                }
            }
        </script>
    </head>
    <body>
        <div id="wrapper">
            <section id="hud">
                <div class="player" id="player1">
                    <div class="playerName">Drew</div>
                    <div class="playerScore">21</div>
                </div>
                <div class="player">
                    <div class="playerName">Dalton</div>
                    <div class="playerScore">12</div>
                </div>
                <div class="player">
                    <div class="playerName">Lindsey</div>
                    <div class="playerScore">23</div>
                </div>
                <div class="player">
                    <div class="playerName">Steven</div>
                    <div class="playerScore">9</div>
                </div>
            </section>
            <section id="table">
                <div id="controls">
                    <input type="button" name="start" id="start" value="Start" class="control start" onclick="play()"; />
                    <input type="button" name="hit" id="hit" value="Hit" class="control hit" onclick="showNames()"; />
                    <input type="button" name="stay" id="stay" value="Stay" class="control stay" />
                </div>
                <div id="dealer">
                    <div id="dealerName">Dealer</div>
                    <div id="dealerScore">19</div>
                    <div id="playArea">
                        <div class="card dealer club first">9</div>
                        <div class="card dealer club">9</div>
                        <div class="card dealer club">9</div>
                        <div class="card dealer heart king"></div>
                    </div>
                </div>
                <div id="playerWrapper">
                    <div class="playerArea a">
                        <div class="playerAreaName">Drew</div>
                        <div class="card club first">9</div>
                        <div class="card club">9</div>
                        <div class="card club">9</div>
                        <div class="card heart king"></div>
                    </div>
                    <div class="playerArea b">
                        <div class="playerAreaName">Drew</div>
                    </div>
                    <div class="playerArea c">
                        <div class="playerAreaName">Drew</div>
                    </div>
                    <div class="playerArea d">
                        <div class="playerAreaName">Drew</div>
                    </div>
                </div>
            </section>
        </div>
    </body>
</html>
var numberOfPlayer = 0;
var players = new Array();
var name;
var names;

// Methods
function showNames() {
    document.getElementById("hud").innerHTML = "Bang, Boom!";
};

function setupGame() {
    numberOfPlayers = prompt("Please enter the number of players (up to 4).");
    if (numberOfPlayers > 0 && numberOfPlayers <= 4) {
        for (var i = 1; i <= numberOfPlayers; i++) {
            players[i] = new Player(prompt("Enter a name for player " + i + "."));
        }

        for (var i = 1; i <= numberOfPlayers; i++) {
            names += players[i].printName();
        }

        return true;
    }

    return false;
}

// Classes
function Player(name) {
    this.name = name;
    this.cards = new Array();
    this.score = 0;

    function printName() {
        return this.name + " ";
    }
}
var numberOfPlayer=0;
var players=新数组();
变量名;
变量名称;
//方法
函数showNames(){
document.getElementById(“hud”).innerHTML=“砰,砰!”;
};
函数setupGame(){
numberOfPlayers=提示(“请输入玩家数量(最多4名)”;

如果(numberOfPlayers>0&&numberOfPlayers您定义的方法错误。它应该类似于以下内容:

this.printName = function() {
    return this.name + " ";
}

您定义的方法错误。它应该类似于以下内容:

this.printName = function() {
    return this.name + " ";
}

Player.printName仅存在于函数播放器中。 您需要返回(引用)它才能从外部访问它

此外..
Player
可以以不同的方式实现(更完美)。。 看看“模块模式”(如果您想了解javascript,模块模式是必读的)


Player.printName仅存在于函数播放器中。 您需要返回(引用)它才能从外部访问它

此外..
Player
可以以不同的方式实现(更完美)。。 看看“模块模式”(如果您想了解javascript,模块模式是必读的)