В коде ниже представлена одна из множества однотипных функций. Нужно объединить их в одну и сделать задаваемым как параметр номер функции (в коде это цифра 21), основная проблема в этом. То есть вместо 21 нужен динамичный параметр, задаваемый при вызове функции (например achnew(21)).
function achnew21() {
if (ach21 === 0) {
let x = document.getElementById("achnew21");
let p = Da;
p = Math.floor(p);
if (p >= 100) {
p = 100;
x.textContent = "Выполнено - " + p + "%";
if (ach21 === 0) {
document.getElementById("Da").textContent = "x" + Da;
ach21 += 1;
};
}
else document.getElementById("achnew21").textContent = p + "%";
x.style.width = p + "%";
}
else {
let y = document.getElementById("achvmntbg21");
y.style.background = "#f7f7ff";
let x = document.getElementById("achnew21");
x.style.width = 100 + "%";
document.getElementById("achnew21").textContent = "Выполнено - 100%";
}
}
Доступ к глобальным переменным можно получить через объект window:
function achnew(i) {
if (window[`ach${i}`] === 0) {
...
Ну я в таких ситуациях пробовал через eval делать, но что-то мне подсказывает что это говнокод будет) К примеру:
for(let i = 1; i<=21; i++) {
eval("function achnew"+i+"() {if (ach"+i+" === 0) {let x = document.getElementById('achnew"+i+"'); let p = Da; p = Math.floor(p);if (p >= 100) { p = 100; x.textContent = 'Выполнено - ' + p + '%';if (ach"+i+" === 0) {document.getElementById('Da').textContent = 'x' + Da; ach"+i+" += 1;};}else document.getElementById('achnew"+i+"').textContent = p + '%';x.style.width = p + '%';}else {let y = document.getElementById('achvmntbg"+i+"');y.style.background = '#f7f7ff';let x = document.getElementById('achnew"+i+"');x.style.width = 100 + '%';document.getElementById('achnew"+i+"').textContent = 'Выполнено - 100%';}}");
}
Ну или вызов функций:
for(let i = 1; i<=21; i++) {
eval("achnew"+i+"()");
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Немного освоившись в JS'e и jQuery, попробовал написать свой слайдер
Как реализовать проверку значения на цвет HEX, RGB или RGBA системы