2011-02-09 2 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" > 

Где единственная разница между gif и fig в CSS заключается в том, что они имеют разные цвета фона. Проблема в том, что изменение заметно только за секунду, и оно не является постоянным!

Любые идеи?

+4

Когда вы вызываете 'change()'? –

+1

Как вызывается 'change()'? Знаете ли вы, что выражение 'if' не имеет смысла? –

+0

Вы устанавливаете один и тот же класс ('gif') для обоих вариантов if. – GenericTypeTea

ответ

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"); 

IF до сих пор не работает, то вы г класс не чейнинга стиль вашего элемента 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

крутые линии там, +1 –

0

Просто добавьте обратную ЛОЖЬ:

onClick="change(); return false;" 

Дело в том, что без него, класс изменяется, то страница перенаправляется, поскольку это поведение по умолчанию тега привязки.

Если вы хотите, чтобы перезагрузить страницу и изменить класс в Reloaded страницы, есть такая ссылка:

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"> 
+0

Хорошо, что все работает нормально ... Но, по-видимому, он не следует за ссылкой из-за возвращаемого ложного утверждения. Но мне нужен как цвет, который нужно изменить, так и ссылку, которая будет отображаться. Есть ли способ достичь этого? – mathew

+0

@mat, так что вам действительно нужен другой подход: укажите флаг отправки ссылки по URL-адресу, а затем, если флаг существует, введите другой класс. У вас есть серверный язык в вашем распоряжении? Другой способ - использовать AJAX. –

+0

Да, я работаю в основном на PHP. Но я действительно не понимаю, что вы имеете в виду. Можете ли вы объяснить мне немного больше, пожалуйста? Извините за то, что это боль в заднице ... – mathew

1

Вы можете искать другую проблему с JavaScript и стилями, но если я понимаю вашу проблему, вы будете по-прежнему нужен другой цвет для якоря, если он был посещен. Вы можете позволить CSS сделать это для вас:

#mem { 
    background: #FFF; 
} 

#mem:visited { 
    background: #009; 
} 

<a id="mem" href="users">Lead me to the promised land!</a> 
Смежные вопросы