#javascript #html
#javascript #HTML
Вопрос:
Спокойной ночи.
Я создаю калькулятор СТАТИСТИКИ для ролевой игры, но у меня есть проблема, и она заключается в том, что при выборе статистики на основе ‘Raza’ (раса) и ‘Nivel’ (уровень) в двух выборках в начале, а затем выберите некоторые выборки снизу, они не суммируют обе суммы.
Например, ‘Brujas y brujos’ и ‘Nivel nato’ дают ‘6 Fuerza’, а добавление ‘ 1 FUE’ вместо ‘7 Fuerza’ сбрасывает счетчик, и появляется ‘1 Fuerza’.
// stats generales por nivel
$('.raza,.nivel').on('change', function() {
var raza = $('.raza').val();
var nivel = $('.nivel').val();
if (raza == 'Brujas y brujos' amp;amp; nivel == 'Nivel nato') {
$('.fue').val('6');
$('.mag').val('10');
$('.res').val('2');
$('.vel').val('2');
$('.vit').val('55');
} else if (raza == 'Brujas y brujos' amp;amp; nivel == 'Nivel primario') {
$('.fue').val('8');
$('.mag').val('20');
$('.res').val('4');
$('.vel').val('3');
$('.vit').val('65');
} else if (raza == 'Brujas y brujos' amp;amp; nivel == 'Nivel medio') {
$('.fue').val('10');
$('.mag').val('30');
$('.res').val('6');
$('.vel').val('4');
$('.vit').val('80');
} else if (raza == 'Brujas y brujos' amp;amp; nivel == 'Nivel total') {
$('.fue').val('12');
$('.mag').val('40');
$('.res').val('8');
$('.vel').val('5');
$('.vit').val('90');
} else if (raza == 'Hijos de Eva' amp;amp; nivel == 'Nivel nato') {
$('.fue').val('7');
$('.mag').val('0');
$('.res').val('3');
$('.vel').val('2');
$('.vit').val('50');
} else if (raza == 'Hijos de Eva' amp;amp; nivel == 'Nivel primario') {
$('.fue').val('9');
$('.mag').val('0');
$('.res').val('5');
$('.vel').val('3');
$('.vit').val('60');
} else if (raza == 'Hijos de Eva' amp;amp; nivel == 'Nivel medio') {
$('.fue').val('11');
$('.mag').val('0');
$('.res').val('7');
$('.vel').val('4');
$('.vit').val('70');
} else if (raza == 'Hijos de Eva' amp;amp; nivel == 'Nivel total') {
$('.fue').val('13');
$('.mag').val('0');
$('.res').val('9');
$('.vel').val('5');
$('.vit').val('85');
} else if (raza == 'Humanos' amp;amp; nivel == 'Nivel nato') {
$('.fue').val('7');
$('.mag').val('0');
$('.res').val('2');
$('.vel').val('1');
$('.vit').val('35');
} else if (raza == 'Humanos' amp;amp; nivel == 'Nivel primario') {
$('.fue').val('9');
$('.mag').val('0');
$('.res').val('4');
$('.vel').val('2');
$('.vit').val('45');
} else if (raza == 'Humanos' amp;amp; nivel == 'Nivel medio') {
$('.fue').val('11');
$('.mag').val('0');
$('.res').val('6');
$('.vel').val('3');
$('.vit').val('55');
} else if (raza == 'Humanos' amp;amp; nivel == 'Nivel total') {
$('.fue').val('13');
$('.mag').val('0');
$('.res').val('8');
$('.vel').val('4');
$('.vit').val('65');
} else if (raza == 'Licántropos' amp;amp; nivel == 'Nivel nato') {
$('.fue').val('7');
$('.mag').val('0');
$('.res').val('3');
$('.vel').val('3');
$('.vit').val('55');
} else if (raza == 'Licántropos' amp;amp; nivel == 'Nivel primario') {
$('.fue').val('9');
$('.mag').val('0');
$('.res').val('5');
$('.vel').val('4');
$('.vit').val('65');
} else if (raza == 'Licántropos' amp;amp; nivel == 'Nivel medio') {
$('.fue').val('11');
$('.mag').val('0');
$('.res').val('7');
$('.vel').val('5');
$('.vit').val('80');
} else if (raza == 'Licántropos' amp;amp; nivel == 'Nivel total') {
$('.fue').val('13');
$('.mag').val('0');
$('.res').val('9');
$('.vel').val('6');
$('.vit').val('90');
} else if (raza == 'Sirenas y tritones' amp;amp; nivel == 'Nivel nato') {
$('.fue').val('6');
$('.mag').val('0');
$('.res').val('2');
$('.vel').val('3');
$('.vit').val('55');
} else if (raza == 'Sirenas y tritones' amp;amp; nivel == 'Nivel primario') {
$('.fue').val('8');
$('.mag').val('0');
$('.res').val('4');
$('.vel').val('4');
$('.vit').val('65');
} else if (raza == 'Sirenas y tritones' amp;amp; nivel == 'Nivel medio') {
$('.fue').val('10');
$('.mag').val('0');
$('.res').val('6');
$('.vel').val('5');
$('.vit').val('80');
} else if (raza == 'Sirenas y tritones' amp;amp; nivel == 'Nivel total') {
$('.fue').val('12');
$('.mag').val('0');
$('.res').val('8');
$('.vel').val('8');
$('.vit').val('90');
} else if (raza == 'Vampiros' amp;amp; nivel == 'Nivel nato') {
$('.fue').val('14');
$('.mag').val('0');
$('.res').val('6');
$('.vel').val('5');
$('.vit').val('85');
} else if (raza == 'Vampiros' amp;amp; nivel == 'Nivel primario') {
$('.fue').val('18');
$('.mag').val('0');
$('.res').val('8');
$('.vel').val('6');
$('.vit').val('100');
} else if (raza == 'Vampiros' amp;amp; nivel == 'Nivel medio') {
$('.fue').val('22');
$('.mag').val('0');
$('.res').val('10');
$('.vel').val('7');
$('.vit').val('115');
} else if (raza == 'Vampiros' amp;amp; nivel == 'Nivel total') {
$('.fue').val('26');
$('.mag').val('0');
$('.res').val('12');
$('.vel').val('8');
$('.vit').val('130');
} else {
// default?
$('.fue').val('0');
$('.mag').val('0');
$('.res').val('0');
$('.vel').val('0');
$('.vit').val('0');
}
});
// puntos de stats por nivel
$(document).ready(function() {
$('.nivel').on('change', function() {
var value = this.value;
if (value == 'Nivel nato') {
$('.ps').val('10');
}
if (value == 'Nivel primario') {
$('.ps').val('20');
}
if (value == 'Nivel medio') {
$('.ps').val('30');
}
if (value == 'Nivel total') {
$('.ps').val('40');
}
$('.ps').change();
});
$('.select').on("change", function() {
var total = 0;
$('.select').each(function() {
var price = parseFloat($(this).find("option:selected").data("price"));
console.log(price);
total = price;
});
$("#opt_price").val(total.toFixed(0))
.change(); // Trigger
});
$(".a2, .b2").on("keydown keyup change", function(event) { // <--- Respond to change event, too
var tr = $(this).closest("tr"); //we will use this to restrict scope to the current table row
tr.find(".c2").val(Number(tr.find(".a2").val()) Number(tr.find(".b2").val()));
});
});
// suma de stats
//fuerza
function updateFuerzaInputValue(){
//Get the input value
var inputValue = document.getElementById("fuerzaselect").value;
//Update the input value in the input box
document.getElementById("fue").value = inputValue
}
//magia
function updateMagiaInputValue(){
//Get the input value
var inputValue = document.getElementById("magiaselect").value;
//Update the input value in the input box
document.getElementById("mag").value = inputValue
}
//resistencia
function updateResistenciaInputValue(){
//Get the input value
var inputValue = document.getElementById("resistenciaselect").value;
//Update the input value in the input box
document.getElementById("res").value = inputValue
}
//velocidad
function updateVelocidadInputValue(){
//Get the input value
var inputValue = document.getElementById("velocidadselect").value;
//Update the input value in the input box
document.getElementById("vel").value = inputValue
}
//vitalidad
function updateVitalidadInputValue(){
//Get the input value
var inputValue = document.getElementById("vitalidadselect").value;
//Update the input value in the input box
document.getElementById("vit").value = inputValue
}
<script src="https://kit.fontawesome.com/3fad2a3853.js" crossorigin="anonymous"></script>
<link rel="stylesheet" type="text/css" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css"/>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.min.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css"><meta charset="UTF-8" content="text/html" http-equiv="Content-Type" /><link href="https://fonts.googleapis.com/css?family=Libre Franklin|ABeeZee|Open Sans|Lora:800|Great Vibes|UnifrakturCook:700|UnifrakturMaguntiaamp;display=swap" type="text/css" rel="stylesheet" /><meta charset="UTF-8" content="text/html" http-equiv="Content-Type" /><link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Fira Sans:300,400,500,700|Old Standard TT:400,700|Poppins:300,400,500,700|Roboto Condensed:400,700amp;display=swap"/><link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Bai Jamjuree:300,400,500,600,700,800,900|Cormorant Infant:300,400,500,600,700,800,900|Cormorant SC:300,400,500,600,700,800,900|Encode Sans Expanded:300,400,500,600,700,800,900|Karla:300,400,500,600,700,800,900|Nunito Sans:300,400,500,600,700,800,900|Raleway:300,400,500,600,700,800,900|Rubik:300,400,500,600,700,800,900|Slabo 27px:300,400,500,600,700,800,900|Source Sans Proamp;display:300,400,500,600,700,800,900=swap"/>
<script src="
https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js">
</script><script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.min.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js">
</script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.min.css"><meta charset="UTF-8" content="text/html" http-equiv="Content-Type" />
<form method="POST" action="035-ejemplo-atributos-min-max-html5.php" name="formu" class="formu"><div class="imggene">
<div class="titlegene">
Calculadora de STATS
</div>
</div>
<div style="" class="row"><div style="font-style: normal;font-weight: 700;text-transform: uppercase;background: #121212;border-bottom: 1px solid #0A0A0A;outline: 1px solid #0A0A0A; border-top: 1px solid #0a0a0a; outline-offset: -20px;border: 20px solid #181818;box-shadow: 0 0 0 1px #0A0A0A;height: 69px;"><div style="padding: 10px;font-style: normal;font-weight: 700;text-transform: uppercase;color: #8A8A8A;font-family: source code pro;font-size: 11px;text-align: center;text-shadow: 1px 1px 0 #000, -1px 1px 0 #000, 1px -1px 0 #000, -1px -1px 0 #000;"><table><tbody><tr><td><div style="height: 40px;width: 40px;background: #151515;border: 1px solid #0a0a0a;text-shadow: 1px 1px 0 #0A0A0A, -1px 1px #0A0A0A, 1px -1px 0 #0A0A0A, -1px -1px #0A0A0A;color: #352534;display: flex;justify-content: center;align-items: center;float: left;"><i class="fas fa-chess" style="font-size: 15px"></i></span></div><div style="height: 40px;width: 255px;text-transform: uppercase;border: 1px solid #0A0A0A;background: #111;font-weight: 700;text-align: center;line-height: 40px;"><select name="titulos" class="raza" style="max-width: 390px!important; border: none; padding: 10px 90px 10px 0px;"><option hidden value="" disabled selected>Raza</option><option label="Brujas y brujos">Brujas y brujos</option>
<option label="Hijos de Eva">Hijos de Eva</option>
<option label="Humanos">Humanos</option>
<option label="Licántropos">Licántropos</option>
<option label="Sirenas y tritones">Sirenas y tritones</option>
<option label="Vampiros">Vampiros</option>
</select></div></td><td><div style="height: 40px;width: 40px;background: #151515;border: 1px solid #0a0a0a;text-shadow: 1px 1px 0 #0A0A0A, -1px 1px #0A0A0A, 1px -1px 0 #0A0A0A, -1px -1px #0A0A0A;color: #352534;display: flex;justify-content: center;align-items: center;float: left;"><i class="fas fa-flag" style="font-size: 15px"></i></span></div><div style="height: 40px;width: 255px;text-transform: uppercase;border: 1px solid #0A0A0A;background: #111;font-weight: 700;text-align: center;line-height: 40px;"><select name="titulos" class="nivel" style="max-width: 390px!important; border: none; padding: 10px 90px 10px 0px;"><option hidden value="" disabled selected>Nivel</option><option label="Nivel nato">Nivel nato</option>
<option label="Nivel primario">Nivel primario</option>
<option label="Nivel medio">Nivel medio</option>
<option label="Nivel total">Nivel total</option>
</select></div></td></tr></tbody></table></div></div>
<div style="padding: 10px; border-top: 1px solid #0a0a0a; text-transform: uppercase; background: #111; border-bottom: 1px solid #0a0a0a;"><table style=" display: flex; justify-content: center; align-items: center; "><tbody><tr><td><div class="stats" style=" width: 90px; "><input id="fue" type="text" class="fue" value="" placeholder="0"> Fuerza</div></td><td><div class="stats" style=" width: 90px; "><input id="mag" type="text" class="mag" value="" placeholder="0"> Magia</div></td><td><div class="stats"><input id="res" type="text" class="res" value="" placeholder="0"> Resistencia</div></td><td><div class="stats" style="width: 120px;"><input id="vel" type="text" class="vel" value="" placeholder="0"> Velocidad</div></td><td><div class="stats" style=" width: 115px; "><input id="vit" type="text" class="vit" value="" placeholder="0"> Vitalidad</div></td></tr></tbody></table></div>
<div style="display: none"><input type="number" name="edad" placeholder="Edad" id="edad"/></div>
<div style="font-style: normal;font-weight: 700;text-transform: uppercase;background: #121212;border-bottom: 1px solid #0A0A0A;outline: 1px solid #0A0A0A;border-top: 1px solid #0a0a0a;outline-offset: -15px;border: 15px solid #181818;box-shadow: 0 0 0 1px #0A0A0A;"><table style="
padding: 5px;
"><tbody><tr><td><div style="height: 30px;width: 30px;background: #151515;border: 1px solid #0a0a0a;text-shadow: 1px 1px 0 #0A0A0A, -1px 1px #0A0A0A, 1px -1px 0 #0A0A0A, -1px -1px #0A0A0A;color: #352534;display: flex;justify-content: center;align-items: center;float: left;"><i class="fas fa-fist-raised" style="font-size: 15px"></i></div><div style="height: 30px;width: 95px;text-transform: uppercase;border: 1px solid #0A0A0A;background: #111;font-weight: 700;text-align: center;line-height: 30px;"><select class="select fuerza" id="fuerzaselect" onchange="updateFuerzaInputValue()" style="
border: none;
padding: 0;
">
<option hidden="" disabled="" selected="" data-price="0" value="Fuerza">Fuerza</option>
<option data-price="0" value="0">0</option>
<option data-price="-2" value="1"> 1 FUE</option>
<option data-price="-4" value="2"> 2 FUE</option>
<option data-price="-6" value="3"> 3 FUE</option>
<option data-price="-8" value="4"> 4 FUE</option>
<option data-price="-10" value="5"> 5 FUE</option>
<option data-price="-12" value="6"> 6 FUE</option>
<option data-price="-14" value="7"> 7 FUE</option>
<option data-price="-16" value="8"> 8 FUE</option>
<option data-price="-18" value="9"> 9 FUE</option>
<option data-price="-20" value="10"> 10 FUE</option>
<option data-price="-22" value="11"> 11 FUE</option>
<option data-price="-24" value="12"> 12 FUE</option>
<option data-price="-26" value="13"> 13 FUE</option>
<option data-price="-28" value="14"> 14 FUE</option>
<option data-price="-30" value="15"> 15 FUE</option>
<option data-price="-32" value="16"> 16 FUE</option>
<option data-price="-34" value="17"> 17 FUE</option>
<option data-price="-36" value="18"> 18 FUE</option>
<option data-price="-38" value="19"> 19 FUE</option>
<option data-price="-40" value="20"> 20 FUE</option>
</select></div></td><td><div style="height: 30px;width: 30px;background: #151515;border: 1px solid #0a0a0a;text-shadow: 1px 1px 0 #0A0A0A, -1px 1px #0A0A0A, 1px -1px 0 #0A0A0A, -1px -1px #0A0A0A;color: #352534;display: flex;justify-content: center;align-items: center;float: left;"><i class="fas fa-hand-sparkles" style="font-size: 15px"></i></div><div style="height: 30px;width: 95px;text-transform: uppercase;border: 1px solid #0A0A0A;background: #111;font-weight: 700;text-align: center;line-height: 30px;"><select class="select magia" id="magiaselect" onchange="updateMagiaInputValue()" style="
border: none;
padding: 0;
">
<option hidden="" disabled="" selected="" data-price="0" value="Magia">Magia</option>
<option data-price="0" value="0">0</option>
<option data-price="-2" value="1"> 1 MAG</option>
<option data-price="-4" value="2"> 2 MAG</option>
<option data-price="-6" value="3"> 3 MAG</option>
<option data-price="-8" value="4"> 4 MAG</option>
<option data-price="-10" value="5"> 5 MAG</option>
<option data-price="-12" value="6"> 6 MAG</option>
<option data-price="-14" value="7"> 7 MAG</option>
<option data-price="-16" value="8"> 8 MAG</option>
<option data-price="-18" value="9"> 9 MAG</option>
<option data-price="-20" value="10"> 10 MAG</option>
<option data-price="-22" value="11"> 11 MAG</option>
<option data-price="-24" value="12"> 12 MAG</option>
<option data-price="-26" value="13"> 13 MAG</option>
<option data-price="-28" value="14"> 14 MAG</option>
<option data-price="-30" value="15"> 15 MAG</option>
<option data-price="-32" value="16"> 16 MAG</option>
<option data-price="-34" value="17"> 17 MAG</option>
<option data-price="-36" value="18"> 18 MAG</option>
<option data-price="-38" value="19"> 19 MAG</option>
<option data-price="-40" value="20"> 20 MAG</option></select></div></td><td><div style="height: 30px;width: 30px;background: #151515;border: 1px solid #0a0a0a;text-shadow: 1px 1px 0 #0A0A0A, -1px 1px #0A0A0A, 1px -1px 0 #0A0A0A, -1px -1px #0A0A0A;color: #352534;display: flex;justify-content: center;align-items: center;float: left;"><i class="fas fa-shield-alt" style="font-size: 15px"></i></div><div style="height: 30px;width: 117px;text-transform: uppercase;border: 1px solid #0A0A0A;background: #111;font-weight: 700;text-align: center;line-height: 30px;"><select class="select resistencia" id="resistenciaselect" onchange="updateResistenciaInputValue()" style="
border: 0;
padding: 0;
">
<option hidden="" disabled="" selected="" data-price="0" value="Resistencia">Resistencia</option>
<option data-price="0" value="0">0</option>
<option data-price="-5" value="1"> 1 RES</option>
<option data-price="-10" value="2"> 2 RES</option>
<option data-price="-15" value="3"> 3 RES</option>
<option data-price="-20" value="4"> 4 RES</option>
<option data-price="-25" value="5"> 5 RES</option></select></div></td><td><div style="height: 30px;width: 30px;background: #151515;border: 1px solid #0a0a0a;text-shadow: 1px 1px 0 #0A0A0A, -1px 1px #0A0A0A, 1px -1px 0 #0A0A0A, -1px -1px #0A0A0A;color: #352534;display: flex;justify-content: center;align-items: center;float: left;"><i class="fas fa-running" style="font-size: 15px"></i></div><div style="height: 30px;width: 106px;text-transform: uppercase;border: 1px solid #0A0A0A;background: #111;font-weight: 700;text-align: center;line-height: 30px;"><select class="select velocidad" id="velocidadselect" onchange="updateVelocidadInputValue()" style="
border: 0;
padding: 0;
">
<option hidden="" disabled="" selected="" data-price="0" value="Velocidad">Velocidad</option>
<option data-price="0" value="0">0</option>
<option data-price="-5" value="1"> 1 VEL</option>
<option data-price="-10" value="2"> 2 VEL</option>
<option data-price="-15" value="3"> 3 VEL</option>
<option data-price="-20" value="4"> 4 VEL</option>
<option data-price="-25" value="5"> 5 VEL</option></select></div></td><td><div style="height: 30px;width: 30px;background: #151515;border: 1px solid #0a0a0a;text-shadow: 1px 1px 0 #0A0A0A, -1px 1px #0A0A0A, 1px -1px 0 #0A0A0A, -1px -1px #0A0A0A;color: #352534;display: flex;justify-content: center;align-items: center;float: left;"><i class="fas fa-heart" style="font-size: 15px"></i></div><div style="height: 30px;width: 106px;text-transform: uppercase;border: 1px solid #0A0A0A;background: #111;font-weight: 700;text-align: center;line-height: 30px;"><select class="select vitalidad" id="vitalidadselect" onchange="updateVitalidadInputValue()" style="
padding: 0;
border: 0;
">
<option hidden="" disabled="" selected="" data-price="0" value="Vitalidad">Vitalidad</option>
<option data-price="0" value="0">0</option>
<option data-price="-1" value="5"> 5 VIT</option>
<option data-price="-2" value="10"> 10 VIT</option>
<option data-price="-3" value="15"> 15 VIT</option>
<option data-price="-4" value="20"> 20 VIT</option>
<option data-price="-5" value="25"> 25 VIT</option>
<option data-price="-6" value="30"> 30 VIT</option>
<option data-price="-7" value="35"> 35 VIT</option>
<option data-price="-8" value="40"> 40 VIT</option></select></div></td></tr></tbody></table></div>
<div class="puntosrasgos"><div class="col-six" style="
height: 40px;
line-height: 40px;
"><div class="titulopuntosrasgos">Puntos de STATS</div></div><div class="col-four"><div class="input-group" style="
position: absolute;
margin-top: -23px;
margin-left: 145px;
">
<table style="">
<tbody><tr>
<td width="10" rowspan="1" style="
table-layout: fixed;
min-width: 35px;
"><div class="col-pp"><input class="col-xs-4 a2 ps" type="number" disabled id="form-field-first" value="0" name="positivos" style="max-width: 30px; background: #111; border: 1px solid #111"></div></td>
<td width="10" rowspan="1"><div class="col-pp"><input class="col-xs-4 b2" value="0" type="number" disabled id="opt_price" placeholder="0" name="negativos" style="max-width: 30px; background: #111; border: 1px solid #111"></div>
</td>
<td colspan="3" height="10"><div class="col-pp"><input class="col-xs-4 c2" value="0" type="number" disabled id="form-field-first" placeholder="0" name="total" style="max-width: 30px; background: #111; border: 1px solid #111"></div>
</td>
</tr>
</tbody></table></div></div></div></div>
Что я мог сделать?
Комментарии:
1. Насколько я вижу, ваши
update...()
функции просто перезаписываются; нет попытки добавить к предыдущему значению.
Ответ №1:
Способ, которым вы выполняете изменения и вычисления, очень сложен в использовании и подвержен ошибкам, подобным вашим. Я бы предложил переписать его, чтобы использовать объекты со значениями для каждой расы и уровня, чтобы вы могли использовать действительные числа в своих расчетах, не делая ничего вручную:
// Object with all races and levels
const stats = {
// Create object for each race
brujas: {
// An array of values for each level for each stat
fue: [6, 8, 10, 12],
mag: [10, 20, 30, 40],
res: [2, 4, 6 , 8],
vel: [2, 3, 4 , 5],
vit: [55, 65, 80, 90],
},
// ...
};
Тогда вместо длинного списка if/else
(который будет расти экспоненциально, если вы добавите больше рас или уровней), вам просто нужно получить статистику по этой расе и уровню:
$('.raza,.nivel').on('change', function() {
const raza = $('.raza').val(); // Should return a key for the race, like 'brujas'
const nivel = $('.nivel').val(); // Should return an index for the level, like '0'
const stat = stats[raza]; // Get the race from stats
// Set all stat values
$('.fue').val(stat.fue[nivel]);
$('.mag').val(stat.mag[nivel]);
$('.res').val(stat.res[nivel]);
$('.vel').val(stat.vel[nivel]);
$('.vit').val(stat.vit[nivel]);
});
Что вы можете сделать, изменив свой selects
(см. Значения их параметров):
<select class="raza">
<option value="brujas">Brujas y brujos</option>
...
</select>
<select class="nivel">
<option value="0">Nivel nato</option>
<option value="1">Nivel primario</option>
<option value="2">Nivel medio</option>
<option value="3">Nivel total</option>
</select>
Это не прямой ответ на ваш вопрос, но, изменив логику, вы, надеюсь, сможете выполнять любые вычисления более простым способом, что может просто избавить вас от возникшей проблемы.
Комментарии:
1. Большое вам спасибо, я постараюсь найти какой-нибудь способ, которым я могу сохранить предыдущее значение при вводе нового значения, не перезаписывая его.