Можно ли упростить код
Можно ли упростить данный код для более легкого добавления элементов?
document.getElementById('exampleInputshema').onkeyup = function () {
var reg = /[а-яА-ЯёЁ]/g;
if (this.value.search(reg) != -1) {
this.value = this.value.replace(reg, '');
}
}
document.getElementById('exampleInputrost').onkeyup = function () {
var reg = /[^0-9]/g;
if (this.value.search(reg) != -1) {
this.value = this.value.replace(reg, '');
}
}
document.getElementById('exampleInputves').onkeyup = function () {
var reg = /[^0-9]/g;
if (this.value.search(reg) != -1) {
this.value = this.value.replace(reg, '');
}
}
// Схема TPF
let docetaxel = 75;
let cisplatin = 100;
let fivephtoruracil = 1000;
//Схема TIP
let paklitaxel = 175;
let iphosfamid = 1000;
let mesna_tip_do = 400;
let mesna_tip_posle = 200;
let cisplatina = 60;
//Схема TIC
let paklitaxel_tic = 175;
let iphosfamid_tic = 1000;
let mesna_tic_do = 400;
let mesna_tic_posle = 200;
//EP
let cisplatin_ep = 80;
let etopozid_ep = 80;
//EC
let etopozid_ec = 100;
//CAV
let ciklofosfamid_cav = 1000;
let doxorubicin_cav = 40;
let vinkristin_cav = 1.4;
//CAE
let ciklofosfamid_cae = 1000;
let doxorubicin_cae = 40;
let etopozid_cae = 50;
//ECF
let epirubicin_ecf = 50;
let cisplatin_ecf = 60;
let fivephtoruracil_ecf = 200;
//EOF
let epirubicin_eof = 50;
let oxaliplatin_eof = 130;
let fivephtoruracil_eof = 200;
//EOX
let epirubicin_eox = 50;
let oxaliplatin_eox = 130;
let kapecitabin_eox = 625;
//ECX
let epirubicin_ecx = 50;
let cisplatin_ecx = 60;
let kapecitabin_ecx = 625;
//XELOX
let oxaliplatin_xelox = 130;
let kapecitabin_xelox = 1000;
//DCF
let docetaksel_dcf = 75;
let cisplatin_dcf = 75;
let fivephtoruracil_dcf = 750;
//CF
let cisplatin_cf = 100;
let fivephtoruracil_cf = 1000;
//MAYO
let fivephtoruracil_mayo = 425;
let leikovorin_mayo = 20;
//ROSWELL
let fivephtoruracil_roswell = 500;
let leikovorin_roswell = 500;
//FOLFOX4
let fivephtoruracil_folfox4_do = 400;
let fivephtoruracil_folfox4_posle = 600;
let leikovorin_folfox4 = 200;
let oxaliplatin_folfox4 = 85;
//FOLFOX6
let fivephtoruracil_folfox6_do = 400;
let fivephtoruracil_folfox6_posle = 2400;
let leikovorin_folfox6 = 400;
let oxaliplatin_folfox6 = 85;
//MFOLFOX7
let fivephtoruracil_mfolfox7 = 3000;
let leikovorin_mfolfox7 = 200;
let oxaliplatin_mfolfox7 = 100;
//FLOX
let fivephtoruracil_flox = 500;
let leikovorin_flox = 500;
let oxaliplatin_flox = 85;
//de Gramont
let fivephtoruracil_degramont_do = 400;
let fivephtoruracil_degramont_posle = 600;
let leikovorin_degramont = 200;
//FOLFIRI
let irinitekan_folfiri = 180;
let fivephtoruracil_folfiri_do = 400;
let fivephtoruracil_folfiri_posle = 2400;
let leikovorin_folfiri = 200;
//FOLFOX7
let fivephtoruracil_folfox7 = 2400;
let leikovorin_folfox7 = 400;
let oxaliplatin_folfox7 = 130;
//FOLFOXIRI
let fivephtoruracil_folfoxiri = 3200;
let leikovorin_folfoxiri = 200;
let oxaliplatin_folfoxiri = 185;
let irinitekan_folfoxiri = 165;
//XELIRI
let irinitekan_xeliri = 250;
let kapecitabin_xeliri = 1000;
//IROX
let oxaliplatin_irox = 85;
let irinitekan_irox = 200;
//FOLFIRINOX
let oxaliplatin_folfirinox = 85;
let irinitekan_folfirinox = 180;
let fivephtoruracil_folfirinox_do = 400;
let fivephtoruracil_folfirinox_posle = 2400;
let leikovorin_folfirinox = 400;
//GEM-CAP
let gemcitabin_gemcap = 1000;
let kapecitabin_gemcap = 650;
let button = document.querySelector('#submit');
button.onclick = function func(e) {
e.preventDefault(); // Предотвращение стандартного поведения
let exampleInputrost = Number(document.getElementById("exampleInputrost").value);
let exampleInputves = Number(document.getElementById("exampleInputves").value);
let exampleInputshema = document.getElementById("exampleInputshema").value.toUpperCase();
function square_body_chemotherapy(exampleInputrost, exampleInputves) {
let weitfloatsquare = Math.pow(exampleInputrost, 0.5);
let heightfloatsquare = Math.pow(exampleInputves, 0.5);
let square_body = 0.0167 * weitfloatsquare * heightfloatsquare;
return square_body.toFixed(1);
}
let res = square_body_chemotherapy(exampleInputrost, exampleInputves);
if (exampleInputshema == "TPF") {
let docetaxel_doza = docetaxel * res;
let cisplatin_doza = cisplatin * res;
let fivephtoruracil_doza = fivephtoruracil * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза доцетаксела: ' + Math.round(docetaxel_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза цисплатина: ' + Math.round(cisplatin_doza) + ' мг. в/в в течение 24 часов в 1 день.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_doza) + ' мг. в сутки в/в в виде постоянной инфузии с 1 по 4 день.</p><p>Каждый 21 день.</p>';
} else if (exampleInputshema == "TIP") {
let paklitaxel_doza = paklitaxel * res;
let iphosfamid_doza = iphosfamid * res;
let mesna_tip_doza_do = mesna_tip_do * res;
let mesna_tip_doza_posle = mesna_tip_posle * res;
let cisplatina_doza = cisplatina * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза паклитаксела: ' + Math.round(paklitaxel_doza) + ' мг. в течение 3 часов в 1 день.</p>' + '<p>Доза ифосфамида: ' + Math.round(iphosfamid_doza) + ' мг. в сутки в/в в течение 2 часов с 1 по 3 день.</p>' + '<p>Доза месны: ' + Math.round(mesna_tip_doza_do) + ' мг. в/в до ифосфамида и ' + Math.round(mesna_tip_doza_posle) + ' мг. в/в через 4-8 часов после ифосфамида в 1-3 дни.</p>' + '<p>Доза цисплатина: ' + Math.round(cisplatina_doza) + ' мг. в/в в 1 день.</p><p>Каждые 21-28 дни.</p>';
} else if (exampleInputshema == "TIC") {
let paklitaxel_doza = paklitaxel_tic * res;
let iphosfamid_doza = iphosfamid_tic * res;
let mesna_tic_doza_do = mesna_tic_do * res;
let mesna_tic_doza_posle = mesna_tic_posle * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза паклитаксела: ' + Math.round(paklitaxel_doza) + ' мг. в течение 3 часов в 1 день.</p>' + '<p>Доза ифосфамида: ' + Math.round(iphosfamid_doza) + ' мг. в/в с 1 по 3 день.</p>' + '<p>Доза месны: ' + Math.round(mesna_tic_doza_do) + ' мг. в/в до ифосфамида и ' + Math.round(mesna_tic_doza_posle) + ' мг. в/в через 4-8 часов после ифосфамида в 1-3 дни.</p>' + '<p>Доза карбоплатина: AUC 6 в/в в 1 день.</p><p>Каждые 21-28 дни.</p>';
} else if (exampleInputshema == "EP") {
let cisplatin_ep_doza = cisplatin_ep * res;
let etopozid_ep_doza = etopozid_ep * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза цисплатина: ' + Math.round(cisplatin_ep_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза этопозида: ' + Math.round(etopozid_ep_doza) + ' мг. в/в с 1 по 3 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "EC") {
let etopozid_ec_doza = etopozid_ec * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза карбоплатина: AUC 6 в 1 день</p>' + '<p>Доза этопозида: ' + Math.round(etopozid_ec_doza) + ' мг. в/в с 1 по 3 день.</p>' + '<p>Каждые 4 недели.</p>';
} else if (exampleInputshema == "CAV") {
let ciklofosfamid_cav_doza = ciklofosfamid_cav * res;
let doxorubicin_cav_doza = doxorubicin_cav * res;
let vinkristin_cav_doza = vinkristin_cav * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза циклофосфамида: ' + Math.round(ciklofosfamid_cav_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза доксорубицина: ' + Math.round(doxorubicin_cav_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза винкристина: ' + Math.round(vinkristin_cav_doza) + ' мг. в/в в 1 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "CAE") {
let ciklofosfamid_cae_doza = ciklofosfamid_cae * res;
let doxorubicin_cae_doza = doxorubicin_cae * res;
let etopozid_cae_doza = etopozid_cae * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза циклофосфамида: ' + Math.round(ciklofosfamid_cae_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза доксорубицина: ' + Math.round(doxorubicin_cae_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза этопозида: ' + Math.round(etopozid_cae_doza) + ' мг. в/в с 1 по 5 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "ECF") {
let epirubicin_ecf_doza = epirubicin_ecf * res;
let cisplatin_ecf_doza = cisplatin_ecf * res;
let fivephtoruracil_ecf_doza = fivephtoruracil_ecf * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза эпирубицина: ' + Math.round(epirubicin_ecf_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза цисплатина: ' + Math.round(cisplatin_ecf_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_ecf_doza) + ' мг. в день в виде постоянной инфузии с 1 по 21 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "EOF") {
let epirubicin_eof_doza = epirubicin_eof * res;
let oxaliplatin_eof_doza = oxaliplatin_eof * res;
let fivephtoruracil_eof_doza = fivephtoruracil_eof * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза эпирубицина: ' + Math.round(epirubicin_eof_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_eof_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_eof_doza) + ' мг. в день в виде постоянной инфузии с 1 по 21 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "EOX") {
let epirubicin_eox_doza = epirubicin_eox * res;
let oxaliplatin_eox_doza = oxaliplatin_eox * res;
let kapecitabin_eox_doza = kapecitabin_eox * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза эпирубицина: ' + Math.round(epirubicin_eox_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_eox_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза капецитабина: ' + Math.round(kapecitabin_eox_doza) + ' мг. p.o. 2 р в день постоянно.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "ECX") {
let epirubicin_ecx_doza = epirubicin_ecx * res;
let cisplatin_ecx_doza = cisplatin_ecx * res;
let kapecitabin_ecx_doza = kapecitabin_ecx * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза эпирубицина: ' + Math.round(epirubicin_ecx_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза цисплатина: ' + Math.round(cisplatin_ecx_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза капецитабина: ' + Math.round(kapecitabin_ecx_doza) + ' мг. p.o. 2 р в день постоянно.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "XELOX") {
let oxaliplatin_xelox_doza = oxaliplatin_xelox * res;
let kapecitabin_xelox_doza = kapecitabin_xelox * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_xelox_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза капецитабина: ' + Math.round(kapecitabin_xelox_doza) + ' мг. p.o. 2 р в день с 1 по 14 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "DCF") {
let docetaksel_dcf_doza = docetaksel_dcf * res;
let cisplatin_dcf_doza = cisplatin_dcf * res;
let fivephtoruracil_dcf_doza = fivephtoruracil_dcf * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза доцетаксела: ' + Math.round(docetaksel_dcf_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза цисплатина: ' + Math.round(cisplatin_dcf_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_dcf_doza) + ' мг. в день в виде постоянной инфузии с 1 по 5 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "CF") {
let cisplatin_cf_doza = cisplatin_cf * res;
let fivephtoruracil_cf_doza = fivephtoruracil_cf * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза цисплатина: ' + Math.round(cisplatin_cf_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_cf_doza) + ' мг. в день в виде постоянной инфузии с 1 по 5 день.</p>' + '<p>Каждые 28 дней.</p>';
} else if (exampleInputshema == "MAYO" || exampleInputshema == "MAYO CLINIC") {
let fivephtoruracil_mayo_doza = fivephtoruracil_mayo * res;
let leikovorin_mayo_doza = leikovorin_mayo * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_mayo_doza) + ' мг. в/в в 1 - 5 дни.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_mayo_doza) + ' мг. в/в в 1-5 дни, вводится до 5-фторурацила.</p>' + '<p>Каждые 4-5 недель.</p>';
} else if (exampleInputshema == "ROSWELL" || exampleInputshema == "ROSWELL PARK") {
let fivephtoruracil_roswell_doza = fivephtoruracil_roswell * res;
let leikovorin_roswell_doza = leikovorin_roswell * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_roswell_doza) + ' мг. еженедельно в течение 6 недель.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_roswell_doza) + ' мг. в/в в течение 2 часов еженедельно до введения 5-фторурацила в течение 6 недель.</p>' + '<p>Каждые 8 недель.</p>';
} else if (exampleInputshema == "FOLFOX4" || exampleInputshema == "FOLFOX 4") {
let fivephtoruracil_folfox4_do_doza = fivephtoruracil_folfox4_do * res;
let fivephtoruracil_folfox4_posle_doza = fivephtoruracil_folfox4_posle * res;
let leikovorin_folfox4_doza = leikovorin_folfox4 * res;
let oxaliplatin_folfox4_doza = oxaliplatin_folfox4 * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_folfox4_doza) + ' мг. в/в в течение 2 часов в 1 день (одновременно с лейковорином).</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_folfox4_doza) + ' мг. в/в в 1 и 2 день в виде 2-х часовой инфузии до введения 5-фторурацила.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_folfox4_do_doza) + ' мг. в/в болюсно, далее ' + Math.round(fivephtoruracil_folfox4_posle_doza) + ' мг. в виде постоянной в/в инфузии в течение 22 часов в 1 и 2 день.</p>' + '<p>Каждые 2 недели.</p>';
} else if (exampleInputshema == "FOLFOX6" || exampleInputshema == "FOLFOX 6") {
let fivephtoruracil_folfox6_do_doza = fivephtoruracil_folfox6_do * res;
let fivephtoruracil_folfox6_posle_doza = fivephtoruracil_folfox6_posle * res;
let leikovorin_folfox6_doza = leikovorin_folfox6 * res;
let oxaliplatin_folfox6_doza = oxaliplatin_folfox6 * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_folfox6_doza) + ' мг. в/в до 5-фторурацила и лейковорин в 1, 15 и 29 день.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_folfox6_doza) + ' мг. в/в в 1 и 2 день в виде 2-х часовой инфузии до введения 5-фторурацила.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_folfox6_do_doza) + ' мг. в/в болюсно в 1 день, далее ' + Math.round(fivephtoruracil_folfox6_posle_doza) + ' мг. в виде постоянной в/в инфузии в течение 46 часов.</p>' + '<p>Каждые 2 недели.</p>';
} else if (exampleInputshema == "MFOLFOX7" || exampleInputshema == "MFOLFOX 7") {
let fivephtoruracil_mfolfox7_doza = fivephtoruracil_mfolfox7 * res;
let leikovorin_mfolfox7_doza = leikovorin_mfolfox7 * res;
let oxaliplatin_mfolfox7_doza = oxaliplatin_mfolfox7 * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_mfolfox7_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_mfolfox7_doza) + ' мг. в/в в 1 день в виде 2-х часовой инфузии до введения 5-фторурацила.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_mfolfox7_doza) + ' мг. в виде постоянной в/в инфузии в течение 46 часов (1-2 день).</p>' + '<p>Каждые 2 недели.</p>';
} else if (exampleInputshema == "FLOX") {
let fivephtoruracil_flox_doza = fivephtoruracil_flox * res;
let leikovorin_flox_doza = leikovorin_flox * res;
let oxaliplatin_flox_doza = oxaliplatin_flox * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_flox_doza) + ' мг. в/в до 5-фторурацила и лейковорина в 1, 15 и 29 день.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_flox_doza) + ' мг. в/в в течение 2 часов еженедельно в течение 6 недель.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_flox_doza) + ' мг. в/в еженедельно в течение 6 недель, вводится через 1 час после начала инфузии лейковорина.</p>' + '<p>Каждые 8 недель.</p>';
} else if (exampleInputshema == "DEGRAMONT" || exampleInputshema == "DE GRAMONT") {
let fivephtoruracil_degramont_do_doza = fivephtoruracil_degramont_do * res;
let fivephtoruracil_degramont_posle_doza = fivephtoruracil_degramont_posle * res;
let leikovorin_degramont_doza = leikovorin_degramont * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_degramont_do_doza) + ' мг. в/в болюсно, далее ' + Math.round(fivephtoruracil_degramont_posle_doza) + ' мг. в виде постоянной в/в инфузии в течение 22 часов в 1 и 2 день.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_degramont_doza) + ' мг. в/в в 1 и 2 день в виде 2-х часовой инфузии до введения 5-фторурацила.</p>' + '<p>Каждые 2 недели.</p>';
} else if (exampleInputshema == "FOLFIRI") {
let fivephtoruracil_folfiri_do_doza = fivephtoruracil_folfiri_do * res;
let fivephtoruracil_folfiri_posle_doza = fivephtoruracil_folfiri_posle * res;
let leikovorin_folfiri_doza = leikovorin_folfiri * res;
let irinitekan_folfiri_doza = irinitekan_folfiri * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза иринотекана: ' + Math.round(irinitekan_folfiri_doza) + ' мг. в 1 день.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_folfiri_doza) + ' мг. в/в в 1 день в виде 2-х часовой инфузии до введения 5-фторурацила.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_folfiri_do_doza) + ' мг. в/в в 1 день, далее ' + Math.round(fivephtoruracil_folfiri_posle_doza) + ' мг. в виде постоянной в/в инфузии в течение 46 часов.</p>' + '<p>Каждые 2 недели.</p>';
} else if (exampleInputshema == "FOLFOX7" || exampleInputshema == "FOLFOX 7") {
let fivephtoruracil_folfox7_doza = fivephtoruracil_folfox7 * res;
let leikovorin_folfox7_doza = leikovorin_folfox7 * res;
let oxaliplatin_folfox7_doza = oxaliplatin_folfox7 * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_folfox7_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_folfox7_doza) + ' мг. в/в в 1 день в виде 2-х часовой инфузии до введения 5-фторурацила.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_folfox7_doza) + ' мг. в виде постоянной в/в инфузии в течение 46 часов (1-2 день).</p>' + '<p>Каждые 2 недели.</p>';
} else if (exampleInputshema == "FOLFOXIRI") {
let fivephtoruracil_folfoxiri_doza = fivephtoruracil_folfoxiri * res;
let leikovorin_folfoxiri_doza = leikovorin_folfoxiri * res;
let oxaliplatin_folfoxiri_doza = oxaliplatin_folfoxiri * res;
let irinitekan_folfoxiri_doza = irinitekan_folfoxiri * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза иринотекана: ' + Math.round(irinitekan_folfoxiri_doza) + ' мг. в 1 день.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_folfoxiri_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_folfoxiri_doza) + ' мг. в/в в 1 день в виде 2-х часовой инфузии до введения 5-фторурацила.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_folfoxiri_doza) + ' мг. в виде постоянной в/в инфузии в течение 46 часов (1-2 день).</p>' + '<p>Каждые 2 недели.</p>';
} else if (exampleInputshema == "XELIRI") {
let irinitekan_xeliri_doza = irinitekan_xeliri * res;
let kapecitabin_xeliri_doza = kapecitabin_xeliri * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза иринотекана: ' + Math.round(irinitekan_xeliri_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза капецитабина: ' + Math.round(kapecitabin_xeliri_doza) + ' мг. p.o. 2 р в день с 1 по 14 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "IROX") {
let oxaliplatin_irox_doza = oxaliplatin_irox * res;
let irinitekan_irox_doza = irinitekan_irox * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза иринотекана: ' + Math.round(irinitekan_irox_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_irox_doza) + ' мг. в/в в 1 день.</p>' + '<p>Каждые 3 недели.</p>';
} else if (exampleInputshema == "FOLFIRINOX") {
let fivephtoruracil_folfirinox_do_doza = fivephtoruracil_folfirinox_do * res;
let fivephtoruracil_folfirinox_posle_doza = fivephtoruracil_folfirinox_posle * res;
let leikovorin_folfirinox_doza = leikovorin_folfirinox * res;
let oxaliplatin_folfirinox_doza = oxaliplatin_folfirinox * res;
let irinitekan_folfirinox_doza = irinitekan_folfirinox * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза иринотекана: ' + Math.round(irinitekan_folfirinox_doza) + ' мг. в 1 день.</p>' + '<p>Доза оксалиплатина: ' + Math.round(oxaliplatin_folfirinox_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза лейковорина: ' + Math.round(leikovorin_folfirinox_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_folfirinox_do_doza) + ' мг. в/в в 1 день.</p>' + '<p>Доза 5-фторурацила: ' + Math.round(fivephtoruracil_folfirinox_posle_doza) + ' мг. в виде постоянной в/в инфузии в течение 46 часов (1-2 день).</p>' + '<p>Каждые 2 недели.</p>';
} else if (exampleInputshema == "GEM-CAP" || exampleInputshema == "GEMCAP" || exampleInputshema == "GEM - CAP") {
let gemcitabin_gemcap_doza = gemcitabin_gemcap * res;
let kapecitabin_gemcap_doza = kapecitabin_gemcap * res;
document.getElementById("elem").innerHTML = '<p>Площадь поверхности тела: ' + res + ' кв. м.</p>' + '<p>Доза гемцитабина: ' + Math.round(gemcitabin_gemcap_doza) + ' мг. в 1 и 8 день.</p>' + '<p>Доза капецитабина: ' + Math.round(kapecitabin_gemcap_doza) + ' мг. р.о. 2 раза в день с 1 по 14 день.</p>' + '<p>Каждые 3 недели.</p>';
}
}
Ответы (2 шт):
Не создавайте большое кол-во переменных, особенно связанных между собой. Их можно объединить в единый объект.
Так все переменные, связанные со схемой, можно занести в объект, например Schema. Для каждой схемы так же можно создать функцию template, которая будет возвращать шаблон с результатом рассчетов.
Я не стал добавлять шаблоны для каждой схемы, добавил только для первой, второй и последней. Пояснения по некторым моментам в комментариях в коде. Этот код еще можно улучшить, но я оставлю это вам.
const masks = {
digits: new RegExp(/[^0-9]/g),
cyrillic: new RegExp(/[а-яА-ЯёЁ]/g),
};
// Объект со всеми интерактивными элементами
const DOMElements = {
inputs: { // все инпуты
exampleSchema: {
nativeElement: document.querySelector('#exampleInputshema'),
mask: masks.cyrillic,
get value() {
return this.nativeElement.value;
},
},
exampleGrowth: {
nativeElement: document.querySelector('#exampleInputrost'),
mask: masks.digits,
get value() { // аксессор get для быстрого досупа к преобразованному в number значению value инпута
return +this.nativeElement.value;
},
},
exampleWeight: {
nativeElement: document.querySelector('#exampleInputves'),
mask: masks.digits,
get value() {
return +this.nativeElement.value;
},
},
},
submit: document.querySelector('#submit'),
elem: {
nativeElement: document.getElementById('elem'),
clear: function () { // функция удаления всех дочерних элементов из elem
this.nativeElement.childNodes.forEach((node) => node.remove());
},
},
};
/**
* Создает блок div с p внутри из массива строк
*/
function createTemplate(items) {
items = items.map((str) => { // переводим строки в элементы p
const p = document.createElement('p');
p.textContent = str;
return p;
});
const container = document.createElement('div'); // создаем контейнер div(не обязательно)
container.append(...items); // добавляем элементы p в div
return container; // возвращаем контейнер
}
/**
* Функция рассчета дозировки
* Принимает в себя объект схемы и площадь тела
* Возвращает объект с дозировками
*/
function calculateDose(schema, body) {
const entries = Object.entries(schema);
const dose = {};
for (let prop of entries) { // проходим по объекту схемы
if (typeof prop[1] != 'number') continue; // если тип значения не number идем дальше
dose[prop[0]] = Math.round(prop[1] * body);
}
return dose;
}
// Объект со схемами
const Schema = {
TPF: { // ключ свойства объекта - это название схемы
docetaxel: 75,
cisplatin: 100,
fivephtoruracil: 1000,
template: function (body) { // функция шаблона
const dose = calculateDose(this, body); // рассчет дозировки this - указатель на контекст, здесь this - это Schema.TPF
const items = [
`Площадь поверхности тела: ${body} кв. м.`,
`Доза доцетаксела: ${dose.docetaxel} мг. в/в в 1 день.`,
`Доза цисплатина: ${dose.cisplatin} мг. в/в в течение 24 часов в 1 день.`,
`Доза 5-фторурацила: ${dose.fivephtoruracil} мг. в сутки в/в в виде постоянной инфузии с 1 по 4 день.`,
`Каждый 21 день.`,
];
return createTemplate(items); // возвращает шаблон с результатом
},
},
TIP: {
paklitaxel: 175,
iphosfamid: 1000,
mesna_before: 400,
mesna_after: 200,
cisplatina: 60,
template: function (body) {
const dose = calculateDose(this, body); // здесь this - это Schema.TIP
const items = [
`Площадь поверхности тела: ${body} кв. м.`,
`Доза паклитаксела: ${dose.paklitaxel} мг. в течение 3 часов в 1 день.`,
`Доза ифосфамида: ${dose.iphosfamid} мг. в сутки в/в в течение 2 часов с 1 по 3 день.`,
`Доза месны: ${this.mesna_before} мг. в/в до ифосфамида и ${this.mesna_after} мг. в/в через 4-8 часов после ифосфамида в 1-3 дни.`,
`Доза цисплатина: ${dose.cisplatina} мг. в/в в 1 день.`,
`Каждые 21-28 дни.`,
];
return createTemplate(items);
},
},
TIC: {
paklitaxel: 175,
iphosfamid: 1000,
mesna_tip_before: 400,
mesna_tip_after: 200,
cisplatina: 60,
},
EP: {
cisplatin: 80,
etopozid: 80,
},
EC: {
etopozid: 100,
},
CAV: {
ciklofosfamid: 1000,
doxorubicin: 40,
vinkristin: 1.4,
},
CAE: {
ciklofosfamid: 1000,
doxorubicin: 40,
etopozid: 50,
},
ECF: {
epirubicin: 50,
cisplatin: 60,
fivephtoruracil: 200,
},
EOF: {
epirubicin: 50,
iplatin: 130,
fivephtoruracil: 200,
},
EOX: {
epirubicin: 50,
oxaliplatin: 130,
kapecitabin: 625,
},
ECX: {
epirubicin: 50,
cisplatin: 60,
kapecitabin: 625,
},
XELOX: {
oxaliplatin: 130,
kapecitabin: 1000,
},
DCF: {
docetaksel: 75,
cisplatin: 75,
fivephtoruracil: 750,
},
CF: {
cisplatin: 100,
fivephtoruracil: 1000,
},
MAYO: {
fivephtoruracil: 425,
leikovorin: 20,
},
ROSWELL: {
fivephtoruracil: 500,
leikovorin: 500,
},
FOLFOX4: {
acceptable: ['FOLFOX 4'],
fivephtoruracil_before: 400,
fivephtoruracil_after: 600,
leikovorin: 200,
oxaliplatin: 85,
},
FOLFOX6: {
acceptable: ['FOLFOX 6'],
fivephtoruracil_before: 400,
fivephtoruracil_after: 2400,
leikovorin: 400,
oxaliplatin: 85,
},
MFOLFOX7: {
acceptable: ['MFOLFOX 7'],
fivephtoruracil: 3000,
leikovorin: 200,
oxaliplatin: 100,
},
FLOX: {
fivephtoruracil: 500,
leikovorin: 500,
oxaliplatin: 85,
},
DEGRAMONT: {
acceptable: ['DE GRAMONT'],
fivephtoruracil_before: 400,
fivephtoruracil_after: 600,
leikovorin: 200,
},
FOLFIRI: {
irinitekan: 180,
fivephtoruracil_before: 400,
fivephtoruracil_after: 2400,
leikovorin: 200,
},
FOLFOX7: {
acceptable: ['FOLFOX 7'],
fivephtoruracil: 2400,
leikovorin: 400,
oxaliplatin: 130,
},
FOLFOXIRI: {
fivephtoruracil: 3200,
leikovorin: 200,
oxaliplatin: 185,
irinitekan: 165,
},
XELIRI: {
irinitekan: 250,
kapecitabin: 1000,
},
IROX: {
oxaliplatin: 85,
irinitekan: 200,
},
FOLFIRINOX: {
oxaliplatin: 85,
irinitekan: 180,
fivephtoruracil_before: 400,
fivephtoruracil_after: 2400,
leikovorin: 400,
},
GEMCAP: {
acceptable: ['GEM-CAP', 'GEM - CAP'], // массив с допустимыми значениями exampleSchema.value
gemcitabin: 1000,
kapecitabin: 650,
template: function (body) {
const dose = calculateDose(this, body);
const items = [
`Площадь поверхности тела: ${body} кв. м.`,
`Доза гемцитабина: ${dose.gemcitabin} мг. в 1 и 8 день.`,
`Доза капецитабина: ${dose.kapecitabin} мг. р.о. 2 раза в день с 1 по 14 день.`,
`Каждые 3 недели.`,
];
return createTemplate(items);
},
},
};
/**
* Добавляет слушатели к инпутам
*/
function addListenersToInputs() {
for (const input in DOMElements.inputs) {
DOMElements.inputs[input].nativeElement.addEventListener(
'keyup',
function () {
const mask = DOMElements.inputs[input].mask;
if (!mask.test(this.value)) return;
this.value = this.value.replace(mask, '');
}
);
}
}
/**
* Общая функция рассчета с выводом результата
*/
function calculate() {
function squareBodyChemotherapy(exampleGrowth, exampleWeight) {
const weitFloatSquare = Math.pow(exampleGrowth, 0.5);
const heightFloatSquare = Math.pow(exampleWeight, 0.5);
return (0.0167 * weitFloatSquare * heightFloatSquare).toFixed(1);
}
const exampleSchema = DOMElements.inputs.exampleSchema.value;
const res = squareBodyChemotherapy(
DOMElements.inputs.exampleGrowth.value, // здесь обращение к аксессорам, а не к значению инпута
DOMElements.inputs.exampleWeight.value
);
for (const schema in Schema) { // проходим по объекту со схемами
if (
schema !== exampleSchema &&
!Schema[schema].acceptable?.includes(exampleSchema) // если ключ схемы не равен значению инпута exampleSchema и массив acceptable не содержит в себе значение инпута exampleSchema, идем дальше
)
continue;
DOMElements.elem.clear();
DOMElements.elem.nativeElement.append(Schema[schema].template(res)); // добавляем контейнер шаблона с результатом в elem
break; // выходим из цикла
}
}
addListenersToInputs();
DOMElements.submit.addEventListener('click', function (event) {
event.preventDefault();
calculate();
});
<div class="form-control">
<label for="schema">Schema</label>
<input name="schema" type="text" id="exampleInputshema" value="TPF" />
</div>
<div class="form-control">
<label for="growth">Growth</label>
<input name="growth" type="text" id="exampleInputrost" value="123" />
</div>
<div class="form-control">
<label for="weight">Weight</label>
<input name="weight" type="text" id="exampleInputves" value="33" />
</div>
<div class="form-control">
<button type="submit" id="submit">Submit</button>
</div>
<div id="elem"></div>
UPD
Можете посмотреть вариант еще получше, он более соответствует паттерну DRY:
const masks = {
digits: new RegExp(/[^0-9]/g),
cyrillic: new RegExp(/[а-яА-ЯёЁ]/g),
};
const DOMElements = {
inputs: ((inputs) => {
return inputs.reduce((acc, curr) => {
const [id, mask, type] = curr;
acc[id] = {
nativeElement: document.getElementById(id),
mask,
get value() {
return new type(this.nativeElement.value).valueOf();
},
};
acc[id].nativeElement.addEventListener('keyup', function () {
if (!mask.test(this.value)) return;
this.value = this.value.replace(mask, '');
});
return acc;
}, {});
})([
['exampleSchema', masks.cyrillic, String],
['exampleWeight', masks.digits, Number],
['exampleGrowth', masks.digits, Number],
]),
submit: document.querySelector('#submit'),
elem: {
nativeElement: document.getElementById('elem'),
clear: function () {
// манкипатчинг?
while (this.nativeElement.firstChild)
this.nativeElement.lastChild.remove();
},
},
};
function appendTemplate(schema, body) {
const doses = calculateDose(schema, body);
let items = [
`${schema.interval}.`,
`Площадь поверхности тела: ${body} кв. м.`,
];
for (const dose in doses) {
const schemeTranslation = translateScheme(dose);
const period = !doses[dose].period
? `${doses[dose].before.value} м.г. ${doses[dose].before.period} и ${doses[dose].before.value} м.г. ${doses[dose].after.period}`
: doses[dose].period;
items.splice(
1,
0,
`Доза ${schemeTranslation}: ${
doses[dose].value ? doses[dose].value + ' мг.' : ''
} ${period}.`
);
}
items = items
.map((str) => {
const p = document.createElement('p');
p.textContent = str;
return p;
})
.reverse();
DOMElements.elem.nativeElement.append(...items);
}
function calculateDose(schema, body) {
const entries = Object.entries(schema);
const dose = {};
for (let prop of entries) {
if (typeof prop[1]?.value != 'number' && !prop[1].after && !prop[1].before)
continue;
const res = Math.round(prop[1].value * body);
if (res) {
dose[prop[0]] = {
value: res,
period: prop[1].period,
};
continue;
}
dose[prop[0]] = prop[1];
}
return dose;
}
function translateScheme(key) {
const translations = {
docetaxel: 'доцетаксел',
cisplatin: 'циспластин',
fivephtoruracil: '5-фторурацил',
paklitaxel: 'паклитаксел',
iphosfamid: 'ифосфамид',
mesna: 'месна',
kapecitabin: 'капецитабин',
gemcitabin: 'гемцитабин',
};
if (!translations[key]) throw `Ключа "${key}" не существует`;
return translations[key];
}
const Schema = {
TPF: {
docetaxel: {
value: 75,
period: 'в/в в 1 день',
},
cisplatin: {
value: 100,
period: 'в/в в течение 24 часов в 1 день',
},
fivephtoruracil: {
value: 1000,
period: 'в сутки в/в в виде постоянной инфузии с 1 по 4 день',
},
interval: 'Каждый 21 день',
},
TIP: {
paklitaxel: {
value: 175,
period: 'в течение 3 часов в 1 день',
},
iphosfamid: {
value: 1000,
period: 'в сутки в/в в течение 2 часов с 1 по 3 день.',
},
mesna: {
before: {
value: 400,
period: 'в/в до ифосфамида',
},
after: {
value: 200,
period: 'в/в через 4-8 часов после ифосфамида в 1-3 дни',
},
},
cisplatin: {
value: 60,
period: 'в/в в 1 день.',
},
interval: 'Каждые 21-28 дни',
},
GEMCAP: {
acceptable: ['GEM-CAP', 'GEM - CAP'],
gemcitabin: {
value: 1000,
period: 'в 1 и 8 день',
},
kapecitabin: {
value: 650,
period: 'р.о. 2 раза в день с 1 по 14 день',
},
interval: 'Каждые 3 недели',
},
};
function calculate() {
function squareBodyChemotherapy(exampleGrowth, exampleWeight) {
const weitFloatSquare = Math.pow(exampleGrowth, 0.5);
const heightFloatSquare = Math.pow(exampleWeight, 0.5);
return (0.0167 * weitFloatSquare * heightFloatSquare).toFixed(1);
}
const exampleSchema = DOMElements.inputs.exampleSchema.value;
const body = squareBodyChemotherapy(
DOMElements.inputs.exampleGrowth.value,
DOMElements.inputs.exampleWeight.value
);
for (const schema in Schema) {
if (
schema !== exampleSchema &&
!Schema[schema].acceptable?.includes(exampleSchema)
)
continue;
DOMElements.elem.clear();
appendTemplate(Schema[schema], body);
break;
}
}
DOMElements.submit.addEventListener('click', function (event) {
event.preventDefault();
calculate();
});
<div class="form-control">
<label for="schema">Schema</label>
<input name="schema" type="text" id="exampleSchema" value="TIP" />
</div>
<div class="form-control">
<label for="growth">Growth</label>
<input name="growth" type="text" id="exampleGrowth" value="123" />
</div>
<div class="form-control">
<label for="weight">Weight</label>
<input name="weight" type="text" id="exampleWeight" value="33" />
</div>
<div class="form-control">
<button type="submit" id="submit">Submit</button>
</div>
<div id="elem"></div>
Изменениям подверглись в основном функции сборки шаблона. Если будут вопросы, задавайте.
Почитайте вот это, будет полезно:
var x={
// 1 не стесняйтесь проксировать часто используемые функции, объекты и методы. пальцы скажут вам спасибо
GI: function(id) {return document.getElementById(id)},
GQS: function(qs) {return document.querySelector(qs)},
// 2 не используйте несколько почти идентичных функций там где можно сделать одну универсальную
// 3 выделять под регулярные шаблоны, отдельные переменные незачем ибо кроме этой функции они нигде не используются
reg: function(id) {if (this.GI(id).value.search(reg) != -1)
this.GI(id).value = this.GI(id).value.replace((id=='exampleInputshema' ? /[а-яА-ЯёЁ]/g : /[^0-9]/g), '');},
// да и вообще, используя select вместо ручного ввода, можно избавиться от нужды щупать значения регуляркой.
/* пока отложим ширево с его коэфицентами в сторонку, ибо код и так пока что штырит знатно =)
соберём универсальный вывод рецепта и все с ним связаное */
body: function(){return (0.0167 * Math.pow(this.GI('exampleInputrost').value, 0.5) * Math.pow(this.GI('exampleInputves').value, 0.5)).toFixed(1);},
sbc: function() {
let weitfloatsquare = Math.pow(this.GI('exampleInputrost').value, 0.5);
let heightfloatsquare = Math.pow(this.GI('exampleInputves').value, 0.5);
let square_body = 0.0167 * weitfloatsquare * heightfloatsquare;
return square_body.toFixed(1);
},
out: function(scheme)
{
this.GI('elem').innerHTML='<p>Площадь поверхности тела: ' + this.sbc() + ' кв. м.</p>';
/* теперь дробим рецепт любого препарата на составляющие и уже исходя из этого будем формировать объект с коэфицентами вынося все лишнее туда */
/* <p>Доза name: doze мг inject_type(что то не заметил, был ли хоть 1 не в\в?) intervals.</p> i++ */
/* соответственно массив\объект препарата будет выглядеть как то так [name, name_ru, doze_source(before), dose_after, inject_type, intervals]*/ /**/
for (var f in schemes)
{
if(f == scheme){
for(var i=0; schemes[f][i]; i++){
this.GI('elem').innerHTML += "<p>Доза " + schemes[f][i].name_ru + ": " + schemes[f][i].dose_source * this.sbc() + " мг " + (schemes[f][i].dose_after ? 'до, ' + (schemes[f][i].dose_after * this.sbc()) + ' после' :'') + schemes[f][i].inject_type + schemes[f][i].intervals + ".</p>";}
break;
}
/*
*/
}
}
}
var schemes = {
TPF:{
0: {
name: 'docetaxel',
name_ru: 'доцетаксела',
dose_source: 75,
dose_after: '',
corrector: '',
inject_type: 'в/в',
intervals: 'в 1 день'
},
1: {
name: 'cisplatin',
name_ru: 'цисплатина',
dose_source: 100,
dose_after: '',
corrector: '',
inject_type: 'в/в',
intervals: 'в течение 24 часов в 1 день'
},
2: {
name: 'fivephtoruracil',
name_ru: '5-фторурацила',
dose_source: 1000,
dose_after: '',
corrector: '',
inject_type: 'в/в в виде постоянной инфузии с 1 по 4 день',
intervals: '.</p><p>Каждый 21 день'
}
},
TIP:{
0: {
name: 'paklitaxel',
name_ru: 'паклитаксела',
dose_source: 175,
dose_after: '',
corrector: '',
inject_type: '',
intervals: ''
},
1: {
name: 'iphosfamid',
name_ru: 'ифосфамида',
dose_source: 1000,
dose_after: '',
corrector: '',
inject_type: '',
intervals: ''
},
2: {
name: 'mesna_tip',
name_ru: 'месны',
dose_source: 400,
dose_after: 200,
corrector: '',
inject_type: '',
intervals: ''
},
3: {
name: 'cisplatina',
name_ru: 'цисплатина',
dose_source: 60,
dose_after: '',
corrector: '',
inject_type: '',
intervals: ''
}
},
TIC:{
0: {
name: '',
name_ru: '',
dose_source: '',
dose_after: '',
corrector: '',
inject_type: '',
intervals: ''
},
1: {
name: '',
name_ru: '',
dose_source: '',
dose_after: '',
corrector: '',
inject_type: '',
intervals: ''
},
2: {
name: '',
name_ru: '',
dose_source: '',
dose_after: '',
corrector: '',
inject_type: '',
intervals: ''
}
}
}
<form>
<select id='exampleInputshema'>
<option>TPF</option>
<option>TIP</option>
<option>TIC</option>
</select>
<input type='number' id='exampleInputrost'/>
<input type='number' id='exampleInputves'/>
<input type='button' onclick='x.out(x.GI("exampleInputshema").value)' value='ok'/>
</form>
<div id='elem'></div>
p.s. полностью вбил только первую схему(TPF), TIP вбита частично, TIC вовсе пустая, так что не удивляйтесь полупустым и пустым строкам. уверен, остальное сами спокойно вобъете, если мой вариант устроит)