1

私はスキル計算機を持っていますが、これはしばらくの間問題なく機能していましたが、JavaScript の経験がない人として理解できなかった何かが常に欠けていました。

追加しようとしているのは、スキル 1 = 最大でない限りスキル 2 を増加させたくないが、スキル 2 = 5 を超えない限りスキル 3 を増加させず、スキル 2 と 3 = 最大でない限りスキル 4 を増加させたくないということです。

それは理にかなっていますか?私はここで少し混乱しています。正しい方向への助けやポイントは素晴らしいでしょう、みんなに感謝します.

私のスキル計算機:

<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>
4

2 に答える 2

0

試す

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!");
    }
};

デモ:フィドル

于 2013-05-20T10:35:18.427 に答える
0

99% 家にいるようです。

どのスキルが渡されているかを確認する最初の比較を行う前に別のスイッチを追加するだけで、基準が満たされない場合は、記述または必要なロジックに基づいて、メソッドを終了するだけです。

それで...

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
 }
于 2013-05-20T10:06:35.130 に答える