在函数内部的开关内调用函数

时间:2017-12-04 17:43:02

标签: jquery

所以,我有一个返回随机结果的函数,根据结果,我想调用另一个函数,但它现在不能正常工作:

$(document).ready(function () {
   $('#classbutton').click(function () {
        $('#resultclass').text(classX());
 });
});

function subkrieger() {
    var subkriegerNumber = Math.floor((Math.random()*2)+1);
        switch (subkriegerNumber) {
            case 1:
                return "Berserkerin";
            case 2:
                return "Duellantin";
            }
}

function classX() {
    var classNumber = Math.floor((Math.random()*2)+1);
        switch (classNumber) {
            case 1:
                return "Kriegerin";
                return subkrieger();
            case 2:
                return "Mystikerin";
        }
}

    <button id="classbutton">Archetyp</button>
    <div id="resultclass" class="results"></div>

所以,第一个函数是为第二个函数获取一个子幻想类,它随机返回一个幻想的RPG类。我尝试在第二个函数的第一个函数中调用第一个函数来尝试它,但没有发生任何事情。 我做错了什么?

并且有一种方法比使用一堆开关更优雅地做到这一点?

1 个答案:

答案 0 :(得分:1)

这是你的问题:

return "Krieger";
return subkrieger();                
break;

您正在返回一个字符串,该字符串结束了该函数的执行,因此您永远不会进入subkrieger()调用。

如果您移除return "Krieger"行,则会让它调用。如果你想要两者(比如像Krieger Berserkerin这样的话,那么你会想要将它们连接起来(加上):

return "Krieger " + subkrieger();

或使用ES6风格:

return `Krieger ${subkrieger()}`;

旁注:在break;之后有一个return是多余的,因为它永远不会到达休息区,所以请将其关闭并执行:

case:
    return "Krieger";