2015-03-11 5 views
0

У меня есть кнопка, которая при нажатии меняет переменную между true и false. Когда true, я хочу, чтобы тест отображался синим, когда false, я хочу, чтобы текст отображался черным. Я не уверен, почему, но текст остается синим, несмотря на изменение переменной. Вот мой код:Как изменить атрибут CSS, изменив глобальную переменную?

<div id="test1">Hello</div> 
<button onclick="change()">Change</button> 

<script> 

var swap = true; 
function change(){ 
    if(swap === true){ 
     swap = false; 
    } 
    else{ 
     swap = true; 
    } 

    document.getElementById('test1').innerHTML = swap; 
} 

if(swap === true){ 
    document.getElementById("test1").style.color = "blue"; 
} 

else if(swap === false){ 
    document.getElementById("test1").style.color = "black"; 
} 
</script> 
+1

Поскольку код, чтобы изменить цвет текста выполняется только при загрузке страницы. Вам нужно переместить код, чтобы установить цвет в метод change(). –

ответ

1

Поскольку изменение стиля не внутри функции, поэтому она вызывается один раз при загрузке страницы, но не тогда, когда кнопка нажата. Попробуйте переместить условие if/else внутри функции.

0

Почему бы не избавиться от инструкции if и else if и поместить логику в функцию change().

JSFIDDLE DEMO

var swap = true; 

function change() { 
    if (swap === true) { 
     swap = false; 
     document.getElementById("test1").style.color = "black"; 
    } else { 
     swap = true; 
     document.getElementById("test1").style.color = "blue"; 
    } 

    document.getElementById('test1').innerHTML = swap; 
} 
Смежные вопросы