Я не знаю, является ли это результатом, который вы хотите получить. Во-первых, я объявляю все изображения с помощью div. Информация скрыта в начале.
<div id="posts">
<div id="post1">
<img src="[Insert an image]" width="100" height="100"/>
<p class="hide"> information about picture one </p>
</div>
<div id="post2">
<img src="[Insert an image]" width="100" height="100"/>
<p class="hide"> information about picture one </p>
</div>
<div id="post3">
<img src="[Insert an image]" width="100" height="100"/>
<p class="hide"> information about picture one </p>
</div>
</div>
эти CSS классы
.nolabel p {display: none;}
.label p { display: block; }
.hide { display: none; }
и JavaScript:
var posts = document.getElementById("posts").children;
function forEach(el, callback) {
for(var i = 0; i <= el.length; i++) {
callback(posts[i]);
}
}
forEach(posts, function(child) {
child.addEventListener("mouseover", function(){
forEach(posts, function(el) {
if(child.id === el.id)
el.className = "label";
else
el.className = "nolabel";
});
});
});
Foreach помогает нам упростить это немного кода.
Поскольку мы могли иметь любое количество изображений, я думал, что это не очень хорошая идея, чтобы ссылаться на каждую из них по ее идентификатору.
Когда курсор наводится над одним из изображений, мы запускаем событие mouseover, которое будет сравнивать идентификаторы. Оператор if позволяет нам только модифицировать элемент, который мы нажали, а остальные остаются с классом nolabel (или заменить его, если у них есть метка). Надеюсь, что это поможет.
Пожалуйста, попробуйте, и когда у вас есть реальный код и возникают проблемы с его работой, задайте вопросы. Этот вопрос слишком широк для каждого объяснения в справочном центре – charlietfl