2012-07-09 119 views
1

所以標籤從數據庫中填充。一旦標籤被點擊,標籤需要變成紅色和粗體。當點擊另一個標籤時,第一個標籤需要回到原始狀態,並且新標籤應該被激活並且需要大膽和紅色。由於某種原因,changeActiveStates()僅適用於前兩個標籤,即當第一個標籤被點擊時它變成紅色,並且當第二個標籤被點擊時,第一個標籤變成黑色,第二個標籤變成紅色。當第三個標籤被點擊時,第二個標籤保持紅色,第三個標籤變成紅色。我該如何解決??如何在點擊時加粗標籤?

下面是代碼:

<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> 

回答

3

你是否反對JQuery?

如果沒有,這應該工作。

$('label').click(function() { 
    $('label').removeClass('activate'); /* Remove 'activate' class from all labels */ 
    $(this).addClass('activate'); /* Add 'activate' class to clicked label 
}); 

編輯:Example on jsFiddle

EDIT:有點更詳細的提問之前沒有使用的JQuery。

JQuery is a javscript library等都必須由瀏覽器加載之前,你可以做所有漂亮的東西。

添加自己的網頁上<head></head>標記之間的以下內容:

<script src="http//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 

Why let google host JQuery for you?

然後添加以下,還標記之間,但上面給出的腳本標籤後:

$(document).ready(function() { 
    $('label').click(function() { 
     $('label').removeClass('activate'); /* Remove 'activate' class from all labels */ 
     $(this).addClass('activate'); /* Add 'activate' class to clicked label 
    }); 
}); 

What does $(document).ready() do?

+0

是的,我的準確地指出。看起來你在幾分之一秒內擊敗了我! :) – WhyNotHugo 2012-07-09 20:15:45

+0

所以,我只是添加jQuery的腳本標記與其他功能,或者我應該創建一個新的.js文件。抱歉,我從來沒有使用過jQuery。 – 2012-07-09 21:02:24

+0

增加了一些更多的答案。我希望它有幫助。 JQuery是非常有用的,並且使得事情變得非常簡單。你一定要檢查一下 – Turnip 2012-07-09 21:25:55

0

也許不是最好的解決辦法,但你有沒有考慮過使用jQuery的?它通常不會太依賴,並且會爲您優雅而輕鬆地解決這些問題。加。跨瀏覽器兼容性。