我正在开发一个使用 Django、一些 JavaScript 和 Tachyons 的项目。我在模板文件中有以下内容:
<tbody class="lh-copy">
{% for alarm in alarm_list %}
<tr>
<td class="pv3 pr3 bb b--black-20 bg-light-green {{ alarm.id }}-td">{{ alarm.agent.name }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green {{ alarm.id }}-td">{{ alarm.profile_name }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green {{ alarm.id }}-td">{{ alarm.is_active }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green {{ alarm.id }}-td">{{ alarm.created }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green {{ alarm.id }}-td">{{ alarm.message }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green {{ alarm.id }}-td">{{ alarm.alrmtype }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green {{ alarm.id }}-td">{{ alarm.acknowledged }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green {{ alarm.id }}-td">{{ alarm.is_hidden }}</td>
{% if alarm.is_active %}
<script language="javascript">
const alarmValElementList{{ alarm.id }} = document.getElementsByClassName("{{ alarm.id }}-td");
for (let i=0; i < alarmValElementList{{ alarm.id }}.length; i ++) {
alarmValElementList{{ alarm.id }}[i].classList.remove("bg-light-green");
alarmValElementList{{ alarm.id }}[i].classList.add("bg-light-red");
};
</script>
{% endif %}
</tr>
{% endfor %}
</tbody>
我正在从 alarm_list 访问元素警报,并使用模板“if”插入 JavaScript 代码,告诉 HTML 元素删除当前背景颜色并添加另一种。我不乐意使用 alarmValeElementList{{ alarm.id }} 作为动态变量名,但我想不出另一种方法来做到这一点。
有没有更好的方法来实现这一点?
预计到达时间:
我认为这看起来更好,因为它摆脱了动态变量名称:
<script language="javascript">
let alarmValElementList = [];
</script>
{% for alarm in alarm_list %}
<tr>
<td class="pv3 pr3 bb b--black-20 bg-light-green alarm-val-td">{{ alarm.agent.name }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green alarm-val-td">{{ alarm.profile_name }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green alarm-val-td">{{ alarm.is_active }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green alarm-val-td">{{ alarm.created }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green alarm-val-td">{{ alarm.message }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green alarm-val-td">{{ alarm.alrmtype }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green alarm-val-td">{{ alarm.acknowledged }}</td>
<td class="pv3 pr3 bb b--black-20 bg-light-green alarm-val-td">{{ alarm.is_hidden }}</td>
{% if alarm.is_active %}
<script language="javascript">
alarmValElementList = document.getElementsByClassName("alarm-val-td");
for (let i=0; i < alarmValElementList.length; i ++) {
alarmValElementList[i].classList.remove("bg-light-green");
alarmValElementList[i].classList.add("bg-light-red");
};
</script>
{% endif %}
</tr>
{% endfor %}
但是,我想知道是否没有更好的方法可以做到这一点?