См:«<= 0« Не предотвращать негативы?
Как скопировать мою * проблему:
Если вы сложите все свои бонусные очки в стат, кроме 1, а затем CTRL-CLICK в другом стате , то бонусное значение переходит в отрицательный, когда * он должен остановиться на 0.
управления:
- левой кнопкой мыши = Выделяют 1 очко
- CTRL левой кнопкой мыши = Выделяют 5 баллов
- Щелкните правой кнопкой мыши = Забери 1 пункт
- CTRL щелкните правой кнопкой мыши = Забрать 5 баллов
JavaScript:
var Alexander =
{
Magic: "MagicVal",
Attack: "AttackVal",
Bonus: "BonusVal",
Limits: {
Magic: {
max: 100,
min: 80
},
Attack: {
max: 100,
min: 80
}
}
};
function table(e)
{
e.preventDefault();
}
function add(character, stat) //Allocates "1" with left-click//
{
var txtNumber = document.getElementById(character[stat]);
var newNumber = parseInt(txtNumber.value) + 1;
if(newNumber > character.Limits[stat].max) return;
var BonusVal = document.getElementById(character.Bonus);
if(BonusVal.value <= 0) return;
var newBonus = parseInt(BonusVal.value) - 1;
BonusVal.value = newBonus;
txtNumber.value = newNumber;
}
function subtract(character, stat) //Takes back "1" with right-click//
{
var txtNumber = document.getElementById(character[stat]);
var newNumber = parseInt(txtNumber.value) - 1;
if(newNumber < character.Limits[stat].min) return;
var BonusVal = document.getElementById(character.Bonus);
var newBonus = parseInt(BonusVal.value) + 1;
BonusVal.value = newBonus;
txtNumber.value = newNumber;
}
function dump(e, character, stat) //Allocates "5" with CTRL+left-click//
{
if (e.ctrlKey == 1 && e.which == 1) {
console.log('met');
var txtNumber = document.getElementById(character[stat]);
var newNumber = parseInt(txtNumber.value) + 4;
if(newNumber > character.Limits[stat].max) return;
var BonusVal = document.getElementById(character.Bonus);
if(BonusVal.value <= 0) return;
var newBonus = parseInt(BonusVal.value) - 4;
BonusVal.value = newBonus;
txtNumber.value = newNumber;
}
}
function reclaim(e, character, stat) //Takes back "5" with CTRL+right-click//
{
if (e.ctrlKey == 1 && e.which == 3) {
console.log('met');
var txtNumber = document.getElementById(character[stat]);
var newNumber = parseInt(txtNumber.value) - 4;
if(newNumber < character.Limits[stat].min) return;
var BonusVal = document.getElementById(character.Bonus);
var newBonus = parseInt(BonusVal.value) + 4;
BonusVal.value = newBonus;
txtNumber.value = newNumber;
}
}
FYI Вы пропускаете последний параметр в ваших ParseInt вызовов. Это может привести к мучительным результатам. – MBillau
В чем смысл? Значение 1, положительное, то вы вычитаете 4. Ваше состояние работает, логика здесь не работает ... Попробуйте «если бонус
LittleSweetSeas
@richadtz Ответ решает все для меня. Спасибо за ваши мысли. – user2811882