首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止一个变量的增加,除非另一个变量= max

停止一个变量的增加,除非另一个变量= max
EN

Stack Overflow用户
提问于 2013-05-20 17:56:50
回答 2查看 101关注 0票数 1

我有一个技能计算器,它已经为我工作了一段时间,但总是遗漏了一些东西,作为一个没有javascript经验的人,我无法理解。

我想补充的是,我不希望技能2增加,除非技能1=最大值,而技能3不增加,除非技能2=大于5,技能4不增加,除非技能2和3=最大值。

这有意义吗?我在这里有点迷惑自己。任何帮助或一个正确的方向将是令人惊叹的,谢谢各位。

我的技能计算器:

代码语言:javascript
复制
<script type="text/javascript">      
    var SkillManager = (function() {
        var max = 50,
            skills = {
                skill1: {
                    cur: 0,
                    max: 10
                },
                skill2: {
                    cur: 0,
                    max: 10
                },
                skill3: {
                    cur: 0,
                    max: 10
                },
                skill4: {
                    cur: 0,
                    max: 10
                }
            },
            totalUsed = 0;

var increase = function(skill) {
    if (totalUsed < max && skills[skill].cur < skills[skill].max) {
        skills[skill].cur++;
        totalUsed++;
        updateDisplay(skill, skills[skill].cur, max - totalUsed);
    } else if(skills[skill].cur === skills[skill].max) {
        alert("You have maxed out that skill!");
    } else {
        alert("You have used all your skill points!");
    }
};

var decrease = function(skill) {
    if (skills[skill].cur > 0) {
        skills[skill].cur--;
        totalUsed--;
        updateDisplay(skill, skills[skill].cur, max - totalUsed);
    } else {
        alert("You can't decrease a skill with 0 points in it!");
    }
};

var updateDisplay = function(skill, value, totalRemaining) {
if(document.all){
    document.getElementById(skill + "counter").innerText = value;
    document.getElementById("remainingPoints").innerText = totalRemaining;
} else {
    document.getElementById(skill + "counter").textContent = value;
    document.getElementById("remainingPoints").textContent = totalRemaining;
}

};

return {
    decrease: decrease,
    increase: increase
};
}());

</script>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-20 18:35:18

试一试

代码语言:javascript
复制
var increase = function(skill) {
    if(skill == 'skill2' && skills.skill1.cur < skills.skill1.max){
        alert('skill2 -> skill1 < ' + skills.skill1.max)
    } else if (skill == 'skill3' && skills.skill2.cur < 5) {
        alert('skill3 -> skill2 < 5')
    } else if (skill == 'skill4' && (skills.skill2.cur < skills.skill2.max || skills.skill3.cur < skills.skill3.max)) {
        alert('skill2 -> skill2 < ' + skills.skill2.max + ' or skill3 < ' + skills.skill3.max)
    } else if (totalUsed < max && skills[skill].cur < skills[skill].max) {
        skills[skill].cur++;
        totalUsed++;
        updateDisplay(skill, skills[skill].cur, max - totalUsed);
    } else if(skills[skill].cur === skills[skill].max) {
        alert("You have maxed out that skill!");
    } else {
        alert("You have used all your skill points!");
    }
};

演示:Fiddle

票数 0
EN

Stack Overflow用户

发布于 2013-05-20 18:06:35

看起来你99%回家了。

只需在进行初始比较之前添加另一个开关,以查看传入的技能,然后根据您描述或想要的任何逻辑,如果不满足条件,则退出方法。

所以..。

代码语言:javascript
复制
if(skill == 'skill2'){
     if(skills["skill1"].cur < skills["skill1"].max)
         return;

     //etc... whatever other tests you wish to run
 }

 if (totalUsed < max && skills[skill].cur < skills[skill].max) {

//the rest of your code
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16646930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档