したがって、ラベルはデータベースから入力されます。ラベルをクリックしたら、ラベルを赤と太字に変える必要があります。別のラベルをクリックすると、最初のラベルが元の状態に戻り、新しいラベルがアクティブになり、太字と赤で表示される必要があります。何らかの理由で、changeActiveStates()は最初の2つのラベルに対してのみ機能します。つまり、最初のラベルがクリックされると赤になり、2番目のラベルがクリックされると最初のラベルが黒になり、2番目のラベルが赤になります。3番目のラベルをクリックすると、2番目のラベルは赤のままで、3番目のラベルは赤に変わります。これを修正するにはどうすればよいですか?
コードは次のとおりです。
<html>
<span>
<input type="hidden" name="LiabFilter" id= "idLib<%=liabkey %>" value="<%=liabkey %>" />
<div>
<label for="idLib<%=liabkey%>" id="liablabel" style="cursor: hand; padding-left: 25px; font-weight: normal"
onClick ="clearLiabFilter();
document.getElementById('idLib<%=liabkey%>').checked = true;
changeActiveStates(this);">
<%=liab.getName() %>
</br>
</label>
</div>
</span>
<style type="text/css">
.activate { font-weight: bold; color:#e40000;}
.visited{ font-weight: normal; color: #000000;}
</style>
<script>
function byId(id) {
return document.getElementById ? document.getElementById(id) : document.all[id];
}
var prevLink = "";
function changeActiveStates(ele) {
if (prevLink) byId(prevLink).className = '';
ele.className = 'activate';
prevLink = ele.id;
}
</script>
</html>