Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не выдергивается первый символ из выражения getAttribute('href') (https://javascript.ru/forum/events/60922-ne-vydergivaetsya-pervyjj-simvol-iz-vyrazheniya-getattribute-%27href%27.html)

Heny 28.01.2016 13:06

Так и было задумано изначально. Там получается комната, у которой меняются цвета стен, так вот будет еще выбираться и материал стен, в таком случае у меня будут дивы с картинками sm... и sp..., а цвета у них одинаковые, вот поэтому мудрю, буду писать условие сейчас, что если выбран такой-то материал, то добавляем sm, если такой-то, то добавляем sp. Ну как-то так :dance:

laimas 28.01.2016 13:17

Цитата:

Сообщение от Heny
будет еще выбираться и материал стен, в таком случае у меня будут дивы с картинками sm... и sp...

Обращение же будет к разным объектам, а цвет и материал выбираются тоже разными ссылками, какие проблемы тогда использовать сразу ID?

Heny 28.01.2016 13:35

Вот в том то и дело, что цвет будет выбираться одними и теми же ссылками, а обращение к разным объектам

laimas 28.01.2016 14:14

Цитата:

Сообщение от Heny
Вот в том то и дело, что цвет будет выбираться одними и теми же ссылками, а обращение к разным объектам

Я разве против? Но далее речь то была о материале. А словами можно - что нужно "сотворить"?

Heny 01.02.2016 14:24

А сотворить нужно грубо говоря планировщик интерьера. У него можно оформить:
1. стены: имеют 3 возможных материала панелей, и в зависимости от выбора радиокнопок панелей, меняются картинки с панелями, на которые скрыты (display:none), а при нажатии на кнопочки с цветами (display:block);
2. полы: имеют 2 возможных варианта - линолеум и наливные, у которых так же разный набор цветов и соответствующих картинок.
А потом еще добавится потолок и оборудование.

Учитывая мое первое знакомство с javascript, то я уже голову всю сломала.
Со стенами у меня все заработало, а добавив пол, все перестало работать :(
Вот.
Можете подскажете, что не так делаю:
<script type="text/javascript">
	    var btn = document.querySelectorAll('.btn'),
		el = document.querySelectorAll('.el');
		   Array.prototype.forEach.call(btn, function(curr){
			   
			   curr.addEventListener('click', function(event) {
				   Array.prototype.forEach.call(el, function(curr){
				   curr.classList.remove('active');
				});	
				   if (document.getElementsByName('gender').checked = true) {
					  if(document.getElementById('sm').checked) {   		
	     	 	      document.querySelector('#sm'+this.getAttribute('href').slice(1)).classList.add('active');				  
					  } 
					  if ((document.getElementById('sp').checked) || (document.getElementById('spr').checked))  {
					  document.querySelector('#sp'+this.getAttribute('href').slice(1)).classList.add('active');
					  } 
					  };
					if (document.getElementsByName('gender2').checked = true) {
					  if (document.getElementById('linol').checked)  {
					  document.querySelector('#p'+this.getAttribute('href').slice(1)).classList.add('active');
					  }};					  
                	  return false;  
				}, false);    
			}); 
</script>


Добавились input radio с другим name (gender2) - это выбор пола. Так вот, первая часть со стенами работает, а с полом нет. Знаю, что вы сейчас надо мной будете смеяться ;) но все, я не могу никак и так и сяк пробовала.
А пример можно посмотреть на этой странице http://www.laminar.ru/test/

laimas 01.02.2016 15:22

Цитата:

Сообщение от Heny
грубо говоря планировщик интерьера

А точнее говоря все материалы хранит сервер. Исходя из того, что материал может иметь текстуры, которые в свою очередь могут иметь различные цвета, подобные данные хранят в связанных таблицах базы. Например, основная таблица - это хранение имеющихся материалов, панели: пластиковые, деревянные и т.п.. Вторая таблица будет содержать все имеющиеся наборы этих материалов по разным характеристикам, как то текстура, цвет и пр., которые в свою очередь хранятся в таблицах характеристик.

Пользователю никогда не вываливается все кучей, а выдается только тот набор, который он запрашивает, например выбрал он панели пластиковые, затем можно выбрать какие есть среди них текстуры, а только потом среди них выбрать по цвету и т.д.. И это делается посредством Ajax.

Чем больше вы будете вываливать на клиента и мудрить с различными подстановками, тем сложнее будет самой разобраться в длинном коде.

Heny 02.02.2016 06:16

Извини пожалуйста, за возможно глупые вопросы. А это можно сделать через запросы к базе mysql, в которой создать как раз эти таблицы, и php?

laimas 02.02.2016 07:09

Ну почему глупый, это как раз и делается так - клиент отправляет асинхронный запрос на сервер, выбор пользователя -> сервер по этому выбору как параметрам делает запрос в базу и возвращает результат запроса клиенту -> клиент по данным ответа сервера добавляет на страницу список, в котором можно выбрать следующие параметры и т.д., пока не будет достигнут последний выбор и определяющий картинку.

Heny 02.02.2016 09:55

Глупый, потому что логику понимаю, а делать не очень представляю как :-E
ну ничего, буду учиться

Heny 03.02.2016 14:16

начала пробовать, вот сразу проблема)))
как удалить именно div блок при клике на ссылку
$( 'ссылка с id #steny' ).click(function () {
// При клике на steny "стены" мы должны удалить 
// все имеющиеся значения в все допустимые значения div c id #p, #pt, #ob

$( '#p, #pt, #ob' ).find( 'div:not(:first)' ) // Ищем все теги, не являющиеся тегом по умолчанию
.remove() // Удаляем эти теги
// Изменим значение свойства disabled объектов,
// так как мы работаем с ними через библиотеку jQuery
.end() // Возвращаемся к исходному объекту
.prop( 'disabled',true ); // Делаем неактивными
// Сохраним выбранное значение списка в переменную
var type_id = $( this ).val();
// Если выбрано значение по умолчанию, ничего не делаем
if (type_id == 0) { return; }
....

Не правильно же, disabled используется только в полях списков?


Часовой пояс GMT +3, время: 01:32.