Добрый день. У меня есть функция которая генерирует таблицу из массива данных.
Проблема в том что помимо массива в функцию передаются еще и значения, из за которых для разных пользователей таблица выглядит по разному, хотя сам массив не меняется. Вот
часть функции:
function createTable(data, str){
var html ="";
for (i = 0; i < data.length; i++){
if(str == 3){
if(data[i].st === 0 && data[i].is == 'текст1'){
html += '<tr class="trTOJ">' +
'<td bgcolor="#bad7ff">' + data[i].cod + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].nr + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].or + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].np + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].op + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].is + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].vr + '</td>' +
'<td class="btn btn-info btn-ioj" id="infoOrderJournal" data1="'+data[i].nr+'" data2="'+data[i].prim+'"\n\
>' +'Оформление'+ '</td>' +
'</tr>';
};
if(data[i].st === 1 && data[i].is == 'текст1'){
html += '<tr id="trTOJ">' +
'<td bgcolor="#a0f0f7">' + data[i].cod + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].nr + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].or + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].np + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].op + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].is + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].vr + '</td>' +
'<td class="btn btn-info btn-woj " id="warningOrderJournal" data1="'+data[i].nr+'" \n\
data2="'+data[i].prim+'">' +'Исполнение'+ '</td>' +
'</tr>';
};
}else if(str == 4){
if(data[i].st === 0 && data[i].is == 'текст2'){
html += '<tr class="trTOJ">' +
'<td bgcolor="#bad7ff">' + data[i].cod + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].nr + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].or + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].np + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].op + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].is + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].vr + '</td>' +
'<td class="btn btn-info btn-ioj" id="infoOrderJournal" data1="'+data[i].nr+'" data2="'+data[i].prim+'"\n\
>' +'Оформление'+ '</td>' +
'</tr>';
};
if(data[i].st === 1 && data[i].is == 'текст2'){
html += '<tr id="trTOJ">' +
'<td bgcolor="#a0f0f7">' + data[i].cod + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].nr + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].or + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].np + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].op + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].is + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].vr + '</td>' +
'<td class="btn btn-info btn-woj " id="warningOrderJournal" data1="'+data[i].nr+'" \n\
data2="'+data[i].prim+'">' +'Исполнение'+ '</td>' +
'</tr>';
};
}else{
if(data[i].st === 0){
html += '<tr class="trTOJ">' +
'<td bgcolor="#bad7ff">' + data[i].cod + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].nr + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].or + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].np + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].op + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].is + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].vr + '</td>' +
'<td class="btn btn-info btn-ioj" id="infoOrderJournal" data1="'+data[i].nr+'" data2="'+data[i].prim+'"\n\
>' +'Оформление'+ '</td>' +
'</tr>';
};
if(data[i].st === 1){
html += '<tr id="trTOJ">' +
'<td bgcolor="#a0f0f7">' + data[i].cod + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].nr + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].or + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].np + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].op + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].is + '</td>' +
'<td bgcolor="#a0f0f7">' + data[i].vr + '</td>' +
'<td class="btn btn-info btn-woj " id="warningOrderJournal" data1="'+data[i].nr+'" \n\
data2="'+data[i].prim+'">' +'Исполнение'+ '</td>' +
'</tr>';
};
};
};
$('#table').html(html);
}
Можно ли как то ее уменьшить? тут 80% создания таблицы дублируются
и таких вот if(data[i].st === 1 && data[i].is == 'текст много штук') их может быть много.
Можно ли написать как то так:
function createTable(data, str){
var html ="";
for (i = 0; i < data.length; i++){
html += '<tr class="trTOJ">' +
'<td bgcolor="#bad7ff">' + data[i].cod + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].nr + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].or + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].np + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].op + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].is + '</td>' +
'<td bgcolor="#bad7ff">' + data[i].vr + '</td>' +
'<td class="btn btn-info btn-ioj" id="infoOrderJournal" data1="'+data[i].nr+'" data2="'+data[i].prim+'"\n\
>' +'Оформление'+ '</td>' +
'</tr>';
};
if(data[i].is == 'текст1'){
//добавить только эту строку в таблицу
}
if(data[i].is == 'текст2'){
//добавить только эту строку в таблицу
}
Я понимаю что наврятли конечно, но может можно проще?