2011-02-09 72 views
1

我有這樣的代碼在JavaScript:Javascript問題!不改變CSS樣式

function change() { 

     document.getElementById("mem").className = 'gif'; 

} 

無花果和GIF是這樣的:

a.fig { 

background: #FFFFFF; 

} 

a.gif { 

background: #000099 ; 
} 

和函數用於這樣

<a class ="fig" id ="mem" onClick="javascript:change()" href="users" > 

在CSS中,gif的唯一區別在於它們有不同的背景顏色。問題在於變化只在一秒之內就顯而易見,並非永久!

任何想法?

+4

什麼時候調用change()? – 2011-02-09 13:59:41

+1

如何調用change()?你是否知道if語句是毫無意義的? – 2011-02-09 13:59:48

+0

您正在爲if語句的可能性設置相同的類('gif')。 – GenericTypeTea 2011-02-09 14:00:58

回答

0
function change() { 
var mem = document.getElementById("mem"); 
    if (mem.className == 'fig') { 
     mem.className = 'gif'; 
    } 
    else { 
     mem.className = 'fig'; 
    } 
} 
0

您可以通過以下方式

document.getElementById("idElement").setAttribute("class", "className"); 

如果還是儘量不工作,你R類別不chaning你的HTML元素的樣式

3

HTML:

<a id="mem" class="fig" href="users"> MEMBERS </a> 

的JavaScript :

var a = document.getElementById('mem'); 

a.onclick = function() { 
    this.className = this.className == 'fig' ? 'gif' : 'fig'; 
} 

現場演示:http://jsfiddle.net/eVQjB/

注:在演示中,我return false;從點擊處理程序,以防止錨固被激活。

0

只需添加返回假:

onClick="change(); return false;" 

的事情是,如果沒有它,該類改變,那麼該頁面被重定向,因爲這是定位標記的默認行爲。

如果你想重新加載頁面,更改頁面重新加載類的,有這樣的鏈接:

href="?change=true" 

然後在這個標誌,如果屬實將不同類的服務器端代碼檢查。我不熟悉PHP但這裏是傳統的ASP版本,希望類似足以PHP:

<% 
Dim sClassName 
If Request("change")="true" Then 
    sClassName = "gif" 
Else 
    sClassName = "fig" 
End If 
%> 
<a class ="<%=sClassName%>" id ="mem" href="?change=true"> 
1

你可能會尋找一個不同的問題與JavaScript和風格,但如果我理解你的問題,你會如果它已經被訪問過,那麼仍然需要一個不同顏色的錨。你可以讓CSS爲你做:

#mem { 
    background: #FFF; 
} 

#mem:visited { 
    background: #009; 
} 

<a id="mem" href="users">Lead me to the promised land!</a>