【发布时间】:2020-02-12 02:03:30
【问题描述】:
我有一个带有 jinja 标签的 HTML 模板,它可以从 JSON 对象中的列表动态创建标签。创建该内容的循环如下。
<div class="card mb-0">
{% for turn in response %}
<div class="card-header collapsed" data-toggle="collapse" data-target="#collapse{{turn['turn_id']}}" href="#">
<a class="card-title"> {{turn['author_name']}} {{turn['date_time']}} </a>
</div>
<div id="collapse{{turn['turn_id']}}" class="card-body collapse in" >
<ul>
{% for sent in turn['list_of_sentences'] %}
<li>{{sent['text']}}</li>
{% for tag in sent['tags'] %}
<label><span class="badge" id="{{tag}}">{{ tag }}</span></label>
{% endfor %}
{% endfor %}
</ul>
</div>
{% endfor %}
</div>
我有一个 javascript 函数,它根据标签 ID 更改 css 类,因为我将标签的 textContent 分配给了 ID。
$(window).on('load', change_label_css );
function change_label_css(){
console.log("Changing CSS classes");
if (document.getElementById("OT").textContent === "OT"){
console.log(document.getElementById("OT").textContent);
document.getElementById("OT").className = "badge badge-warning";
}
if(document.getElementById("RES").textContent === "RES"){
console.log(document.getElementById("RES").textContent);
document.getElementById("RES").className = "badge badge-success";
}
if(document.getElementById("DES").textContent === "DES"){
console.log(document.getElementById("DES").textContent);
document.getElementById("DES").className = "badge badge-light";
}
if(document.getElementById("CW").textContent === "CW"){
console.log(document.getElementById("CW").textContent);
document.getElementById("CW").className = "badge badge-info";
}
if(document.getElementById("Org").textContent === "Org"){
console.log(document.getElementById("Org").textContent);
document.getElementById("Org").className = "badge badge-primary";
}
if(document.getElementById("QT").textContent === "QT"){
console.log(document.getElementById("QT").textContent);
document.getElementById("QT").className = "badge badge-primary";
}
if(document.getElementById("URL").textContent === "URL"){
console.log(document.getElementById("URL").textContent);
document.getElementById("URL").className = "badge badge-secondary";
}
else if(document.getElementById("C").textContent === "C"){
console.log(document.getElementById("C").textContent);
document.getElementById("C").className = "badge badge-dark";
}
console.log("End of changing CSS classes");
}
我不认为这是正确的逻辑,因为我的标签具有不同的 ID 和相似的 ID。
我想要一个关于如何遍历每个标签并根据 textContent 更改 CSS 类的建议。
【问题讨论】:
-
也许通过 developer.mozilla.org/en-US/docs/Web/API/Element/… 查看您的标签会避免 ids 需求(ids 不能在文档中使用两次 :()
标签: javascript html css jinja2