У меня есть div, каждый div имеет другой цвет фона. Основываясь на каждом якоре, я нажимаю на некоторые из divs, и они отображаются. Моя проблема в том, что когда я нажимаю на якорь с id=next
, который показывает следующий div, я не могу изменить цвет фона, я создал функцию, но она не работает, может ли кто-нибудь помочь мне исправить это?Изменить цвет фона divs в следующем div нажмите
Мой jsfiddle: DEMO
Мой HTML код:
<body>
<div class="info-right-div" id="right-info1" style="display: block;">
<p> div-1- <br/> Content of div 1: color is YELLOW </p>
</div>
<div class="info-right-div" id="right-info2" style="display: none;">
<p> div-2- <br/> Content of div 2 : color is RED </p>
</div>
<div class="info-right-div" id="right-info3" style="display: none;">
<p> div-3- <br/> Content of div 3: color i GRAY </p>
</div>
<br /><br /> <br />
<a id="info1" href="#"> show div 1</a>
<a id="info2" href="#"> show div 2</a>
<a id="info3" href="#"> show div 3</a>
<a id="next" href="#"> next div</a>
<br /><br /> <br />
</body>
Мой JQuery код:
$(document).ready(function() {
jQuery("a").click(function() {
var id = jQuery(this).attr("id");
switch (true) {
case (id == 'info1') :
$(".info-right-div").hide();
$('#right-info1').show();
$("body").css('background-color', '#FFFF00');
break;
case (id == 'info2'):
$(".info-right-div").hide();
$('#right-info2').show();
$("body").css('background-color', '#FF0000');
break;
case (id == 'info3'):
$(".info-right-div").hide();
$('#right-info3').show();
$("body").css('background-color', '#00FF00');
break;
case(id == 'next'):
var div1vis = $(".info-right-div").filter(':visible');
var id = jQuery(this).attr("id");
if (div1vis.next().length > 0) {
div1vis.next().show().prev().hide();
var nextid = div1vis.prev().attr("id");
changebackground(nextid);
}
break;
};
});
});
function changebackground(divid) {
if (divid == 'right-info1') { $("body").css('background-color', '#FFFF00'); }
if (divid == 'right-info1') { $("body").css('background-color', '#FF0000'); }
if (divid == 'right-info1') { $("body").css('background-color', '#00FF00'); }
}
Когда я нажимаю на якорь с идентификатором next
с var nextid = div1vis.prev().attr("id");
я попытался взять идентификатор div, который отображается.
Вы должны взглянуть на синтаксисе переключатель - коммутатор должен быть идентификатор, случаи являются строки. Я обновил вашу скрипту https://jsfiddle.net/1yscy5ts/7/ –
@ axel.michel, но все же цвет фона остается тем же самым для divs при нажатии следующего якоря? –
yep, в вашей разметке нет id, как «left-info1», только правая информация - поэтому нет изменения цвета. –