С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 1
Регистрация: 19.07.2016
Сообщений: 21
1

Замена backgroundImage в CSS через Javascript

27.07.2016, 08:36. Показов 2066. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помочь, не могу разобраться

Задача: при клике на блоки preview1, preview2, preview3 (background-image прописан в CSS), передавать путь картинки в mainview-image (картинка в HTML разметке) и соответственно менять саму картинку

Замена backgroundImage в CSS через Javascript


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
     <div class="preview-box">
        <div id="preview1" onclick="change_preview1()">
        </div>
 
        <div id="preview2" onclick="change_preview2()">
        </div>
 
        <div id="preview3" onclick="change_preview3()">
        </a>
     </div>
 
     <div id="mainview">
        <img src="images/red.jpg" alt="image" id="mainview-image">
     </div>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#preview1 {
    background-image: url("images/red.jpg");
}
 
#preview2 {
    background-image: url("images/blue.jpg");
}
 
#preview3 {
    background-image: url("images/green.jpg");
}
 
#mainview {
    width: 200px;
    height: 300px;
}
Javascript
1
2
3
4
5
6
7
8
9
10
11
function change_preview1 () { 
   /* Получаю url картинки из CSS preview1 */
   var element = document.getElementById('preview1').style.backgroundImage; 
   /* Смотрю передался ли путь в переменную */
   alert(element); 
   var mainview-image = document.getElementById('mainview-image'); 
   /* Подставляю полученный url из preview1 в путь картинки mainview-image */
   mainview-image.src = element;                                                  
}
 
... Повторяем код для 2 и 3 картинки
Написал - не работает, начал искать и возникли вопросы:
1) Почему alert не выдает путь?
2) Можно ли избежать дублирования кода для 2 и 3 картинки? Как дать понять скрипту откуда был клик?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2016, 08:36
Ответы с готовыми решениями:

Сжатие javascript/css через bat
Здравствуйте. Есть библиотека YUI Compressor Как через бат заставить сжать все файлы js/css в...

Как подключить два css через javascript
Всем привет. Господа, подскажите, пожалуйста, как подключить два css через javascript. В...

Замена слов через CSS
Здравствуйте! Подскажите, возможно ли через CSS провести русификацию сайта mishastik.com? То есть...

Как подключить файл стилей CSS через JavaScript
вызов js скрита находится в теле документа. как мне в таком случае подключить CSS файлик &lt;link...

2
2 / 2 / 1
Регистрация: 19.07.2016
Сообщений: 21
27.07.2016, 09:41  [ТС] 2
Так как путь картинок известен и его можно не получать из свойств CSS,
а сразу прописать вручную, попробовал сделать вот так:

HTML5
1
2
3
4
5
6
<div id="preview1" onclick="document.getElementById('mainview-image').src='images/red.jpg'">
</div>
<div id="preview2" onclick="document.getElementById('mainview-image').src='images/blue.jpg'">
</div>
<div id="preview3" onclick="document.getElementById('mainview-image').src='images/green.jpg'">
</div>
Вроде заработало, но большая картинка mainview-image меняется только на долю секунды и потом обратно возвращает картинку по умолчанию...

Прощу помощи
0
Эксперт JSЭксперт HTML/CSS
3826 / 2676 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
27.07.2016, 13:18 3
CSS
1
2
3
4
5
6
7
.preview {
  width: 100px;
  height: 100px;
  border: 1px solid black;
  display: inline-block;
  font-size: 32px;    
}
HTML5
1
2
3
<div class="preview" onclick="changeBack(this, 'green')"></div>
<div class="preview" onclick="changeBack(this, 'red')"></div>
<div class="preview" onclick="changeBack(this, 'blue')"></div>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function changeBack(div, color) {
  switch (color) {
    case 'green':
      color = 'images/green.jpg';
      break
    case 'red':
      color = 'images/red.jpg';
      break
    case 'blue':
      color = 'images/blue.jpg';
      break
  }
div.style.backgroundImage = 'url(' + color + ')';
}
Результат
0
27.07.2016, 13:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2016, 13:18
Помогаю со студенческими работами здесь

Переключение стилей при нажатии через css, без javascript
Необходимо реализовать смену стилей при выборе элемента input type=&quot;radio&quot; c id=&quot;list&quot; Есть...

Установка BackgroundImage панели через OpenFileDialog
Мне нужно что бы открытой картинкой в панели заливался фон. Метод открытия изображения public...

Для PictureBox изменять BackGroundImage через фиксированый интервал времени
парни помогите сделать задание написать на С#. 11. Для компонента PictureBox изменять:...

CSS, не работает ссылка на .css документ через java script
&lt;head&gt; &lt;title&gt;Сайта&lt;/title&gt; &lt;script language=JavaScript&gt; if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru