Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2015, 09:52
Аспирант
Отправить личное сообщение для Sergei-b84 Посмотреть профиль Найти все сообщения от Sergei-b84
 
Регистрация: 26.06.2014
Сообщений: 69

Смена фоновых изображений при перезагрузке страницы
Привет всем! Помогите решить задачу. Есть див
<div class="bg-image "></div>

Есть стили :
<style> 
.bg-image.bg1{background-image:url('../img/bg-slide-1.jpg')}
.bg-image.bg2{background-image:url('../img/bg-slide-2.jpg')}
.bg-image.bg3{background-image:url('../img/bg-slide-3.jpg')}
</style>

Нужно написать java скрипт, который будет добавлять к нашему исходному диву классы bg1, bg2, bg3 при перезагрузке страницы. Все должно происходить циклично, т.е. после bg3 снова bg1
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2015, 10:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,133

Sergei-b84,
храните индекс в localStorage добавляйте класс согласно индексу индекс увеличивайте ... всё
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2015, 10:40
Аспирант
Отправить личное сообщение для Sergei-b84 Посмотреть профиль Найти все сообщения от Sergei-b84
 
Регистрация: 26.06.2014
Сообщений: 69

Написал функцию. Помогите найти ошибку.
window.onload = function() {
        
	var bg-image = document.getElementsByClassName('bg-image');
	var x = Math.floor((Math.random() * 3) + 1);	


	bg-image.classList.add('bg'+x);
 
	}
Ответить с цитированием
  #4 (permalink)  
Старый 23.05.2015, 10:59
Аспирант
Отправить личное сообщение для Sergei-b84 Посмотреть профиль Найти все сообщения от Sergei-b84
 
Регистрация: 26.06.2014
Сообщений: 69

Переделал так
var x = Math.floor((Math.random() * 3) + 1); 
var newname = 'bg'+ x;

function dobavitKlassAkkuratno(elementik, klass) {
    if(!elementik.className) {
        elementik.className = klass;
    } else {
        imyaNovogoKlassa = elementik.className;
        imyaNovogoKlassa+= " ";
        imyaNovogoKlassa+= klass;
        elementik.className = imyaNovogoKlassa;
    }
}

dobavitKlassAkkuratno(document.getElementById('reloadimage'), newname);
Все работает, но хотелось бы чтобы гуру проверили. Заранее спасибо.
Ответить с цитированием
  #5 (permalink)  
Старый 23.05.2015, 11:02
Аспирант
Отправить личное сообщение для Sergei-b84 Посмотреть профиль Найти все сообщения от Sergei-b84
 
Регистрация: 26.06.2014
Сообщений: 69

Заметил одно "но", изображения меняются, но не при каждой перезагрузке страницы, т.е. может через раз или два. Как исправить?
Ответить с цитированием
  #6 (permalink)  
Старый 23.05.2015, 12:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,133

Сообщение от Sergei-b84
Помогите найти ошибку.
Сообщение от Sergei-b84
var bg-image = document.getElementsByClassName('bg-image')[0];

Последний раз редактировалось рони, 23.05.2015 в 12:53.
Ответить с цитированием
  #7 (permalink)  
Старый 23.05.2015, 12:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,133

Сообщение от Sergei-b84
Как исправить?
Сообщение от рони
храните индекс в localStorage добавляйте класс согласно индексу индекс увеличивайте
Ответить с цитированием
  #8 (permalink)  
Старый 23.05.2015, 12:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,133

localStorage циклическая смена фона
Sergei-b84,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style>.bg-image{
   width: 100px;
   height: 100px;
   background-size: 100%;
   background-repeat: no-repeat;
}
.bg-image.bg1{background-image:url('http://javascript.ru/forum/images/smilies/smile.gif')}
.bg-image.bg2{background-image:url('http://javascript.ru/forum/images/smilies/victory.gif')}
.bg-image.bg3{background-image:url('http://javascript.ru/forum/images/smilies/cray.gif')}
</style>
<script>
   window.onload = function() {
	var image = document.querySelector('.bg-image')
	var x = +localStorage.x || 0;
	image.classList.add('bg'+(x +1));
    localStorage.x = ++x % 3
	}
</script>
</head>

<body>
<div class="bg-image "></div>
</body>

</html>

Последний раз редактировалось рони, 23.05.2015 в 13:00.
Ответить с цитированием
  #9 (permalink)  
Старый 23.05.2015, 16:28
Аспирант
Отправить личное сообщение для Sergei-b84 Посмотреть профиль Найти все сообщения от Sergei-b84
 
Регистрация: 26.06.2014
Сообщений: 69

Круто. Спасибо!!!!
Ответить с цитированием
  #10 (permalink)  
Старый 23.05.2015, 19:35
Аватар для Leon-on12
Аспирант
Отправить личное сообщение для Leon-on12 Посмотреть профиль Найти все сообщения от Leon-on12
 
Регистрация: 07.04.2015
Сообщений: 65

Кривовато, но сойдёт. elem это обращение к вашему элементу.
var backNum;
	if (localStorage.getItem("whichBack") == null){
		elem.class = "bg1";
		backNum = 2;
		localStorage.setItem("whichBack", backNum);
	}
	else{
		backNum = localStorage.getItem("whichBack");
		elem.class = "bg"+ backNum;
		backNum++;
		if{backNum == 4){
			backNum = 1;
		}
		localStorage.setItem("whichBack", backNum);
	}

Не забудьте приписать ваш класс. Я же вам советую назначить id этому элементу, если он у вас один такой.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод radio checked при перезагрузке страницы arhat78 Общие вопросы Javascript 21 15.05.2015 14:01
Смена класса у отдельного div при нажатии на ссылку Maxim-Ra Элементы интерфейса 6 15.02.2015 12:20
submit form при закрытие страницы djonA Общие вопросы Javascript 0 26.05.2013 00:49
Смена изображений при нажатии в мобильном браузере Амир Элементы интерфейса 0 09.09.2012 20:04
Смена background у тега div при перезагрузке страницы NAMAT (X)HTML/CSS 1 10.05.2012 18:43