2013-01-04 2 views
1

Я делаю аккордеон FAQ. Есть много сценариев в Интернете, но я ненавижу использовать сценарии, которые я не понимаю (я новичок в Javascript). Поэтому я начинаю с базового и работаю. Следующий код расстраивает меня, почему он не работает:basic javascript accordion

Javascript:

function faq1() { 

var faq1 = document.getElementById("faq1") 

if (faq1.style.display = "none") { 
faq1.style.display = "block"; 
} 

else { 
faq1.style.display = "none"; 
} 
} 

HTML/CSS:

<a href="#" onclick="faq1()">Question 1</a> 
<div id="faq1" style="display: none"> 
Answer to question 1 
</div> 

скрипт открывает аккордеон просто найти. Тем не менее, «else» часть Javascript не работает, когда я нажимаю на ссылку во второй раз, я не могу заставить дисплей отключиться. Я пробовал различные методы «else if», чтобы увидеть, будет ли это работать без везения.

Спасибо ребята

+0

«Я ненавижу, используя скрипты я не понимаю (я новичок в Javascript)» - может быть, это проблема, которую должны решать. Хотя очевидно, что нужно изобретать колесо для учебных целей, пройдите перед тем, как вы запустите. И ИМО, способная использовать библиотеки на основе документации, должна появиться перед тем, как писать собственные, специальные, нерегулярные замены - это просто звучит как настроить себя для кошмара обслуживания по дороге. – millimoose

+1

Кроме того, вы пробовали использовать отладчик? Проверьте, действительно ли 'faq1()' даже вызывается, какие строки выполняются и каково значение 'faq1.style.display' на самом деле. – millimoose

ответ

6

Вы используете назначение (=) вместо сравнения (==) в вашем состоянии.

В качестве альтернативы,

function faq1() { 

    var faq1 = document.getElementById("faq1"); 

    faq1.style.display = faq1.style.display == "none" ? "" : "none"; 

} 
+0

Ну, это было глупо со мной. Спасибо за помощь, исправили ее как шарм. –

+1

@ user1935137 вежливой задачей было бы «принять» их ответ, чтобы они получили кредит на решение. –