我有一个技能计算器,它已经为我工作了一段时间,但总是遗漏了一些东西,作为一个没有javascript经验的人,我无法理解。
我想补充的是,我不希望技能2增加,除非技能1=最大值,而技能3不增加,除非技能2=大于5,技能4不增加,除非技能2和3=最大值。
这有意义吗?我在这里有点迷惑自己。任何帮助或一个正确的方向将是令人惊叹的,谢谢各位。
我的技能计算器:
<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>发布于 2013-05-20 18:35:18
试一试
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
发布于 2013-05-20 18:06:35
看起来你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
}https://stackoverflow.com/questions/16646930
复制相似问题