Marriestein
@Marriestein

JavaScript: первые шаги. Как обратиться к вложенному элементу?

Есть div. Внутри diva есть список. У списка есть класс в css "visible", где прописано свойство "opacity: 0".
Хочется при клике на div менять opacity вложенного списка на 1. При следующем клике - снова на 0. И так далее)
Принцип выпадающего меню.

Пока есть такой код:

html
<div class="box" id="boxS" onclick="visibleOnClick()">
	<ul class="visible">
	  <li>blabla</li>
	  <li>blabla</li>
       </ul>
</div>


css
.visibleOnClick {
	opacity: 0;
	filter: alpha(opacity=0);
}

js

function visibleOnClick () {
	var visible = document.getElementsByClassName('visible')[0];
	if ( visible.style.opacity == 0) {
		visible.style.opacity = 1; 
	}
	else {
		visible.style.opacity = 0;
	}
	
}


Хочется, честно говоря, обращаться непосредственно к списку как к потомку дива, избегая обращения к общему классу.

Взываю к снисходительности, как newbie)
  • Вопрос задан
  • 10117 просмотров
Решения вопроса 2
Я бы сделал как-то так.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
function visibleOnClick (node) {
    var visible = node.childNodes[1]; 
    visible.style.opacity = (visible.style.opacity == 0 ? 1 : 0);
}


<div class='box' onclick='visibleOnClick(this)'>
    <ul class='visible'>
	<li>blabla</li>
	<li>blabla</li>
    </ul>
</div>


this.childNodes[0] - текстовая нода, присутствует если между <div> и <ul> будет хоть один символ, в том числе и перевод строки.

.style.opacity сделает элемент прозрачным, но место занимать он по прежнему будет. Для освобождения пространства надо переключать .style.display между 'none' и 'block'.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы