<table border>
<tr>
<th>Student</th><th>Mark</th>
</tr>
<tr data-student="1">
<td class="label">Student one</td>
<td><input type="number" min="0" max="100" /></td>
</tr>
<tr data-student="2">
<td class="label">Student two</td>
<td><input type="number" min="0" max="100" /></td>
</tr>
<tr data-student="3">
<td class="label">Student three</td>
<td><input type="number" min="0" max="100" /></td>
</tr>
<tr>
<td colspan="2" ><button>Do work</button></td>
</tr>
</table>
<script>
var scale=[
{color:'green',max:100,min:70},
{color:'blue',max:70,min:50},
{color:'yellow',max:50,min:35}
];
document.querySelector('button').addEventListener('click', function(e) {
document.querySelectorAll('tr[data-student]').forEach(function(row){
var mark = row.querySelector('input').value;
var color = 'red';
for(var i=0;i<scale.length;i++){
if(mark > scale[i].min && mark<=scale[i].max) {
color = scale[i].color;
break;
}
}
row.querySelector('.label').style.backgroundColor = color;
});
});
</script>
Это один из возможных подходов.Помните: я не хочу делать домашнее задание - ваши требования могут отличаться.Никто здесь не сделает это за вас.Но вы можете получить некоторые идеи из этого решения.
Чтобы прямо ответить на ваш вопрос: вложенные циклы for были вашей проблемой здесь, так как удаление их делает свое дело:
button.addEventListener("click",function(){
for(var i = 0; i < students.length; i++){
if (students[i].value >= 70 && students[i].value <= 100){
label[i].style.backgroundColor = "green";
}else if (students[i].value >= 50 && students[i].value < 70){
label[i].style.backgroundColor = "blue";
}else if (students[i].value >= 35 && students[i].value < 50){
label[i].style.backgroundColor = "yellow";
}else{
label[i].style.backgroundColor = "red";
}
}
});