Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.02.2016, 23:28
Интересующийся
Отправить личное сообщение для AlphaKeloid Посмотреть профиль Найти все сообщения от AlphaKeloid
 
Регистрация: 31.01.2016
Сообщений: 14

переключение слоев изображения select
Всем доброго времени суток
прошу помочь с кодом

имеется это
<div class="">
	<div class="controller_one">
		<form>
		<select name="imagename" onChange="changeImage(this.form, 'pic1')">
			<option title="img/1/some0.png">0</option>
			<option title="img/1/some1.png">1</option>
			<option title="img/1/some2.png">2</option>
		</select>
		</form>
	</div>
	<div class="controller_two">
		<form>
		<select name="imagename" onChange="changeImage(this.form, 'pic2')">
			<option name="light" title="img/2/some0.png">0</option>
			<option name="light" title="img/2/some1.png">1</option>
			<option name="dark" title="img/2/some2.png">2</option>
			<option name="dark" title="img/2/some3.png">3</option>
			<option name="light" title="img/2/some4.png">4</option>
			<option name="dark" title="img/2/some5.png">5</option>
			<option name="light" title="img/2/some6.png">6</option>
		</select>
		<input type="hidden" data-img="img/light.png">
		<input type="hidden" data-img="img/dark.png">
		</form>
	</div>
	<div class="controller_three">
		<form>
		<select name="imagename" onChange="changeImage(this.form, 'pic3')">
			<option title="img/3/some0.png">0</option>
			<option title="img/3/some1.png">1</option>
			<option title="img/3/some2.png">2</option>
			<option title="img/3/some3.png">3</option>
			<option title="img/3/some4.png">4</option>
			<option title="img/3/some5.png">5</option>
			<option title="img/3/some6.png">6</option>
			<option title="img/3/some7.png">7</option>
		</select>
		</form>
	</div>
	<div class="images">
		<div class="null">
			<img name="pic1" src="img/1/some0.png" id="layer_0">
		</div>
		<div name="null">
			<img name="pci2" src="img/2/some0.png" id="layer_1">
		</div>
		<div class="null">
			<img name="pic3" src="img/3/some0.png" id="layer_2">
		</div>
		<div>
			<img class="over_ch" src="img/transparent.png" style="display:none;"  id="over layer_3">
		</div>
	</div>
	<input type="button" onclick="visibilityLayer('over');" value="Toggle"/>
</div>

<script>
	$(function() {
	   	$('select').on('change', function() {
	        var selector = 'input[data-img*="' + $(this).find("option:selected").attr('name') + '"]';
			var image = $(this).parent().find(selector).attr('data-img');
			    $(this).parent().find('img.over_ch').attr('src', image);
		 }); 
	});
//overlay chenger
</script>
<script type="text/javascript">
    function visibilityLayer(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'none')
          e.style.display = 'block';
       else
          e.style.display = 'none';
    }
//toggle
</script>
<script>
function changeImage(form, pic1) {selection = form.imagename.options[form.imagename.selectedIndex].title; document.images[pic1].src = selection;}
function changeImage(form, pic2) {selection = form.imagename.options[form.imagename.selectedIndex].title; document.images[pic2].src = selection;}
function changeImage(form, pic3) {selection = form.imagename.options[form.imagename.selectedIndex].title; document.images[pic3].src = selection;}
//layer chenger
</script>


проблема в том, что два скрипта (layer chenger и overlay chenger) по отдельности работают правильно
при попытке совместить из работу, overlay chenger на отказ не хочет работать


суть кода в чем, изпользуя слои одного размера с выравниванием по центру делаем будущий макет модели.
т.е. посредством select>option выбираем нужные цвет каждого из слоем
слой overlay скрыт,отображается только по нажатию на toggle , использоваться он по идее должен совмесно с layer_1
в зависимости от значения в атрибуте name из выпадающего списка (привязанного к этому слою) в layer_3 меняется url изображения из скрытых инпутов ниже

оговорюсь...по отдельности скрипты работают отлично,вместе работает только один (layer chenger)
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2016, 00:48
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

AlphaKeloid,
а если так добавить
$(function() {
            $('select').on('change', function () {
                var selector = 'input[data-img*="' + $(this).find("option:selected").attr('name') + '"]';
                var image = $(this).parent().find(selector).attr('data-img');
                $(this).parent().find('img.over_ch').attr('src', image);
            });
            function visibilityLayer(id) {
                var e = document.getElementById(id);
                if (e.style.display == 'none')
                    e.style.display = 'block';
                else
                    e.style.display = 'none';
            }

            function changeImage(form, pic1) {
                selection = form.imagename.options[form.imagename.selectedIndex].title;
                document.images[pic1].src = selection;
            }

            function changeImage(form, pic2) {
                selection = form.imagename.options[form.imagename.selectedIndex].title;
                document.images[pic2].src = selection;
            }

            function changeImage(form, pic3) {
                selection = form.imagename.options[form.imagename.selectedIndex].title;
                document.images[pic3].src = selection;
            }


        });

Последний раз редактировалось Mess4me, 06.02.2016 в 00:54.
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2016, 22:21
Интересующийся
Отправить личное сообщение для AlphaKeloid Посмотреть профиль Найти все сообщения от AlphaKeloid
 
Регистрация: 31.01.2016
Сообщений: 14

так вообще не работает ничего
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2016, 22:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

AlphaKeloid,
нужно
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
вначале подгрузить
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2016, 22:30
Интересующийся
Отправить личное сообщение для AlphaKeloid Посмотреть профиль Найти все сообщения от AlphaKeloid
 
Регистрация: 31.01.2016
Сообщений: 14

нашел проблему. метод find() ищет элемент (img,div,span outher) но как я понял не работает с css классами
кто нибудь подсказать альтернативу?
Ответить с цитированием
  #6 (permalink)  
Старый 06.02.2016, 22:36
Интересующийся
Отправить личное сообщение для AlphaKeloid Посмотреть профиль Найти все сообщения от AlphaKeloid
 
Регистрация: 31.01.2016
Сообщений: 14

я вот так подгружаю
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
Ответить с цитированием
  #7 (permalink)  
Старый 06.02.2016, 23:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

AlphaKeloid,
<!DOCTYPE HTML>

<html>

<head>
  <title>Unvalued</title>
  <meta charset="utf-8">
  <style type="text/css">
    .over_ch{
      display: none;
    }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
   <script>
  $(function() {
    $("select").change(function() {
        var i = $("select").index(this);
        var src = this.value;
        $(".images img").eq(i)[0].src = src;
        src = {
            light: "img/light.png",
            dark: "img/dark.png"
        }[$(this).find("option:selected").data("name")];
        src && ($(".images img").last()[0].src = src)
    });
    $(".over").click(function() {
        $(".over_ch").toggle()
    })
});
  </script>
</head>

<body>
<div class="">
	<div class="controller">

		<select>
			<option value="img/1/some0.png">0</option>
			<option value="img/1/some1.png">1</option>
			<option value="img/1/some2.png">2</option>
		</select>

	</div>
	<div class="controller">

		<select>
			<option data-name="light" value="img/2/some0.png">0</option>
			<option data-name="light" value="img/2/some1.png">1</option>
			<option data-name="dark" value="img/2/some2.png">2</option>
			<option data-name="dark" value="img/2/some3.png">3</option>
			<option data-name="light" value="img/2/some4.png">4</option>
			<option data-name="dark" value="img/2/some5.png">5</option>
			<option data-name="light" value="img/2/some6.png">6</option>
		</select>

	</div>
	<div class="controller">

		<select>
			<option value="img/3/some0.png">0</option>
			<option value="img/3/some1.png">1</option>
			<option value="img/3/some2.png">2</option>
			<option value="img/3/some3.png">3</option>
			<option value="img/3/some4.png">4</option>
			<option value="img/3/some5.png">5</option>
			<option value="img/3/some6.png">6</option>
			<option value="img/3/some7.png">7</option>
		</select>

	</div>
	<div class="images">
		<div class="null">
			<img name="pic1" src="img/1/some0.png" >
		</div>
		<div name="null">
			<img name="pci2" src="img/2/some0.png" >
		</div>
		<div class="null">
			<img name="pic3" src="img/3/some0.png" >
		</div>
		<div>
			<img class="over_ch" src="img/transparent.png" >
		</div>
	</div>
	<input type="button" class="over" value="Toggle"/>
</div>

</body>

</html>
Ответить с цитированием
  #8 (permalink)  
Старый 07.02.2016, 13:22
Интересующийся
Отправить личное сообщение для AlphaKeloid Посмотреть профиль Найти все сообщения от AlphaKeloid
 
Регистрация: 31.01.2016
Сообщений: 14

рони,Все работает как часы))
огромное спасибо)
Ответить с цитированием
  #9 (permalink)  
Старый 09.02.2016, 22:13
Интересующийся
Отправить личное сообщение для AlphaKeloid Посмотреть профиль Найти все сообщения от AlphaKeloid
 
Регистрация: 31.01.2016
Сообщений: 14

рони,
добрый вечер
сегодня после тестов возникла ошибка
Uncaught TypeError: Cannot set property 'src' of undefined
ругается эту строку
$(".images img").eq(i)[0].src = src;


что показывает консоль

Uncaught TypeError: Cannot set property 'src' of undefined
(anonymous function) @ test.html:20
m.event.dispatch @ jquery.min.js:3
m.event.add.r.handle @ jquery.min.js:3

причину появления так и не смог обнаружить
вы извинит,я новичек в этом,прошу Вас помочь

Последний раз редактировалось AlphaKeloid, 09.02.2016 в 22:15.
Ответить с цитированием
  #10 (permalink)  
Старый 09.02.2016, 22:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

AlphaKeloid,
значит у вас исчезли картинки со страницы или вы перенесли их в другое место или запустили скрипт без строки 16 или убили $ (заменить все $ на jQuery)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка нескольких select на одинаковые значения emulexx Общие вопросы Javascript 6 07.04.2015 15:19
Fancybox 1.3.1 переключение размера изображения Артем163 Библиотеки/Тулкиты/Фреймворки 9 17.04.2014 10:27
SQL запрос. Как делать SELECT с условием SELECT Duda.Ml1986@gmail.com Серверные языки и технологии 16 13.01.2014 16:09
Метод для конвертирования едениц px, em, %, pt. jegit Элементы интерфейса 0 07.03.2013 16:15
Проблема с динамическим формированием select elepsion jQuery 1 31.10.2010 14:31