I'm doing an image viewer with four buttons (First, Previous, Next, Last).
Initially, an image is loaded randomly (I have them stored in a folder called "images"), and then we can move through events of those four buttons.
Why do not I apply the modifications to the buttons correctly in relation to the CSS?
/*Al cargar la página realiza esta llamada a la funcion*/
$(document).ready(function() {
//Creamos un objeto de la clase Galería. Le pasamos el parámetro necesario.
galeria = new Galeria(7);
});
//Creamos la clase Galería con su método constructor, sus atributos y sus diferentes métodos necesarios.
var Galeria = function(imagenes) {
//Indice de la imagen que se está mostrando (cursor).
var cursor = 0;
//Array con imágenes.
var arrayImages = new Array();
//Cantidad de imágenes.
var numImages = imagenes; //7 imagenes de Juego de Tronos.
//Añadimos las imagenes con un "for" al array "arrayImages".
for (var i = 1; i <= numImages; i++) {
arrayImages.push("foto" + i + ".jpg");
}
//Generamos un número aleatorio entre 1 y 7 y ese número se le asignamos al array "arrayImages".
var imagenAleatoria = function() {
cursor = (Math.round(Math.random() * 100)) % imagenes;
return arrayImages[cursor];
}
//Cursor en la primera posición del array, devolviendo el nombre de la imagen que hay en la misma.
var primeraPosicion = function() {
cursor = 0;
return arrayImages[cursor];
}
//Cursor en la última posición del array, devolviendo el nombre de la imagen que hay en la misma.
var ultimaPosicion = function() {
cursor = arrayImages.length - 1;
return arrayImages[cursor];
}
//Cursor en la posicion ANTERIOR a la actual, devolviendo el nombre de la imagen que hay en la misma.
var posicionAnteriorActual = function() {
if (cursor > 0) {
cursor--;
return arrayImages[cursor];
} else {
return arrayImages[0];
}
}
//Cursor en la posicion SIGUIENTE a la actual, devolviendo el nombre de la imagen que hay en la misma.
var posicionSiguienteActual = function() {
if (cursor < 6) {
cursor++;
return arrayImages[cursor];
} else {
return arrayImages[6];
}
}
//Comprobar donde está el cursor.
var comprobarCursor = function() {
if (cursor == 0) {
$('#primera').addClass("deshabilitado");
$('#anterior').addClass("deshabilitado");
$('#siguiente').addClass("habilitado");
$('#ultima').addClass("habilitado");
} else if (cursor == 6) {
$('#primera').addClass("habilitado");
$('#anterior').addClass("habilitado");
$('#siguiente').addClass("deshabilitado");
$('#ultima').addClass("deshabilitado");
} else {
$('#primera').addClass("habilitado");
$('#anterior').addClass("habilitado");
$('#siguiente').addClass("habilitado");
$('#ultima').addClass("habilitado");
}
}
//Inicialmente se cargará una imagen al azar.
var inicializarImagen = function() {
//En JS: document.getElementById("imagen").setAttribute("style", "background-image:.....");
$('#imagen').css({
'background-image': 'url(images/' + imagenAleatoria() + ')'
});
}
inicializarImagen();
//Eventos de botones.
$('#siguiente').click(function() {
comprobarCursor();
$('#imagen').css({
'background-image': 'url(images/' + posicionSiguienteActual() + ')'
});
});
$('#anterior').click(function() {
comprobarCursor();
$('#imagen').css({
'background-image': 'url(images/' + posicionAnteriorActual() + ')'
});
});
$('#primera').click(function() {
comprobarCursor();
$('#imagen').css({
'background-image': 'url(images/' + primeraPosicion() + ')'
});
});
$('#ultima').click(function() {
comprobarCursor();
$('#imagen').css({
'background-image': 'url(images/' + primeraPosicion() + ')'
});
});
}
@font-face {
font-family: GoT;
src: url("fonts/got.ttf");
}
* {
font-family: GoT;
}
/* "Truco" para conseguir una imagen de fondo transparente en el body */
#contenedor {
position: relative;
}
#contenedor:after {
content: "";
display: block;
position: absolute;
top: 0;
left: 0;
background-image: url(images/fondo.jpg);
width: 100%;
height: 100%;
opacity: 0.2;
z-index: -1;
}
h2 {
margin: 0 auto;
text-align: center;
padding-top: 10px;
padding-bottom: 10px;
}
#galeria {
width: 500px;
margin: 0 auto;
border: 2px solid black;
background-color: #FFFFFF;
border-radius: 10px;
}
#imagen {
width: 300px;
height: 300px;
background-size: contain;
margin: 0 auto;
transition: background-image 1s;
-webkit-transition: background-image 1s;
}
#botones {
margin: 10px;
text-align: center;
}
#botones ul {
list-style-type: none;
display: inline;
padding-left: 0;
}
#botones ul li {
display: inline;
padding-left: 5px;
padding-right: 5px;
}
#botones * a {
margin-bottom: 10px;
padding: 4px;
background-color: #B8B894;
border: 2px solid #3B3B3A;
font-size: .6em;
color: black;
text-decoration: none;
border-radius: 10px;
}
.deshabilitado {
background-color: #FF5C33 !important;
}
.habilitado {
background-color: #B8B894 !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="contenedor">
<div id="galeria">
<h2>Visor de personajes</h2>
<div id="imagen"> </div>
<div id="botones">
<ul>
<li><a href="#" id="primera">PRIMERA</a></li>
<li><a href="#" id="anterior">ANTERIOR</a></li>
<li><a href="#" id="siguiente">SIGUIENTE</a></li>
<li><a href="#" id="ultima">ULTIMA</a></li>
</ul>
</div>
</div>
</div>
My mistake is that they do not assign the CSS. That is to say: if I load the page and I have the photo1, the PREVIOUS or FIRST button must be in orange, I understand that they are disabled, and if I go forward photo by photo with the NEXT button, from photo1 to photo7, when I arrive to photo7 the NEXT button and the last button must be disabled.