Я создал условие if, но я хочу проверить несколько переменных. Переменная относится к другому id, как вы можете видеть ниже.
Возможно ли оптимизировать код, потому что я не хочу копировать прошлое и изменять переменные.
if (T11 > 33){
document.getElementById("T11").innerHTML = '-';
}
else if(T11 > 2){
document.getElementById("T11").innerHTML = T11-30;
document.getElementById("T11").style.textDecoration = 'underline';
}
else {
document.getElementById("T11").innerHTML = T11;
}
if (T12 > 33){
document.getElementById("T12").innerHTML = '-';
}
else if(T12 > 2){
document.getElementById("T12").innerHTML = T12-30;
document.getElementById("T12").style.textDecoration = 'underline';
}
else {
document.getElementById("T12").innerHTML = T12;
}
if (T.. > 33){
document.getElementById("T..").innerHTML = '-';
}
else if(T.. > 2){
document.getElementById("T..").innerHTML = T..-30;
document.getElementById("T..").style.textDecoration = 'underline';
}
else {
document.getElementById("T..").innerHTML = T..;
}
Пожалуйста, предложите.
T1
T33
должен быть t
, где t
- массив. Затем выполняется один цикл. Если от T1
до T33
нельзя создать массив (но я не могу представить, почему они не могли), вы можете сначала создать временный массив из них:
var t = [T1, T2, T3, T4, ... ];
Но опять же, действительно, у вас не должно быть T1
T33
; просто t
.
Если у вас есть t
, вы можете использовать forEach
:
t.forEach(function(val, index) {
var element = document.getElementById("T" + (index + 1));
if (val > 33){
element.innerHTML = '-';
}
else if (t[n] > 2){
element.innerHTML = val - 30;
element.style.textDecoration = 'underline';
}
else {
element.innerHTML = val;
}
});
... но если вы хотите цикл for
:
for (var n = 0; n < t.length; ++n) {
var val = t[n];
var element = document.getElementById("T" + (n + 1));
if (val > 33){
element.innerHTML = '-';
}
else if (t[n] > 2){
element.innerHTML = val - 30;
element.style.textDecoration = 'underline';
}
else {
element.innerHTML = val;
}
}
сделать его функцией
codeReduce(13,TD1) //call like this
function codeReduce(id,name){
if(id > 33){
document.getElementById(name).innerHTML = '-';
}
else if(id > 2){
document.getElementById(name).innerHTML = id-30;
document.getElementById(name).style.textDecoration = 'underline';
}
else{
document.getElementById(name).innerHTML = id;
}
}
Вы можете использовать объект, где у вас есть строка как ключ и значение, например
values = {
T11: 20,
T22: 10
}
Затем используйте Object.keys
и loop
Object.keys(values).forEach(function (k) {
var element = document.getElementById(k);
if (values[k] > 33) {
element.innerHTML = '-';
return;
}
element.innerHTML = values[k];
if (values[k] > 2) {
element.innerHTML -= 30;
element.style.textDecoration = 'underline';
}
});
Храните данные в массиве объектов
const data = [{
variable: T11,
name: "T11"
},{
variable: T12,
name: "T12"
}];
data.forEach(d => {
let element = document.getElementById(d.name);
if(d.variable > 33){
element.innerHTML = '-';
}else if(d.variable > 2){
element.innerHTML = d.variable - 30;
element.style.textDecoration = 'underline';
}else{
element.innerHTML = d.variable
}
});
if
не создает цикл ... Обратите внимание, что тире (-
) не является допустимым символом в идентификаторе JS.