Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #71 (permalink)  
Старый 07.03.2010, 17:54
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

В представлении кнопка говорит: "я кнопка для переключения цвета" и всё. Как оно будет переключатся не имеет значения. Нужно вести реестр элементов интерфейса, саму механику можно менят отдельно. А это значет, что дизайнер работает отдельно и его не волнуют JS реализации. Если будут добавлены новые эллементы, нужно не переделывать всё, а просто добавить обработчиков. Не обязательно всю страницу в одном файле хранить. Лучше побить на модули по назначению (а не по располажению) скрипты тоже должны быть обернуты в стиле ООП. Тут главное не полная изоляция а то, что дизайнер занимется своим, а программист - своим.

Тем более xsl и xml это не файл, а информация сформированная сервисом в ответ на запрос и ее легко компоновать.

Последний раз редактировалось JAre, 07.03.2010 в 17:57.
Ответить с цитированием
  #72 (permalink)  
Старый 07.03.2010, 18:03
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от JAre
В представлении кнопка говорит: "я кнопка для переключения цвета" и всё.
Ну разумеется можно не пользоваться селекторами и помечать нужные элементы классами (как, собственно, и должно быть), но зачем тогда jQuery? Вся концепция jQuery построена вокруг селекторов.
Ответить с цитированием
  #73 (permalink)  
Старый 07.03.2010, 18:38
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

В jQuery полно плагинов и эллементов интерфейса, которые можно использовать как "черный ящик" и разнообразных AJAX-ов. При желании можно найти плагин на любой случай жизни. Всё с более менее стандартным интерфейсом, всё компактно упаковано и лишнее можно просто не подключать. Конечно, толк от jQuery как от средства путишествий по ДОМ меньше, если всё динамично, но такие путишествия не особо то и нужны так как документ строит XSLT из блоков, а он сам имеет всю необходимую логику + он может даже скрипт построить и привести в соотвецтвие маркеры в JS селекторах и HTML. В документе будет только то, что необходимо в данный момент. CSS то же не очень гибок, но и его можно сделать таковым если строить через XSLT - хорошо для разрешения неоднозначностей и других конфликтов. Гугол продвигает JSON тут то же ест шаблоны "google-jstemplate" Видимо, экономичнее и читабельней.

Последний раз редактировалось JAre, 07.03.2010 в 19:43.
Ответить с цитированием
  #74 (permalink)  
Старый 07.03.2010, 19:54
Аватар для why.not?
Аспирант
Отправить личное сообщение для why.not? Посмотреть профиль Найти все сообщения от why.not?
 
Регистрация: 28.02.2010
Сообщений: 74

Ответить с цитированием
  #75 (permalink)  
Старый 07.03.2010, 21:24
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

JAre,
В моем лексиконе есть такое понятие "шаблонизаторные уроды", я называю таким понятием сайты или системы главным достоинством которых их создатели считают то, что они построены на XSLT.

ps: И да я если чё за JSON

и ещё у Вас jquery головного мозга, а на этом сайте есть раздел для обсуждения jquery, не хотите проследовать туда?
Ответить с цитированием
  #76 (permalink)  
Старый 07.03.2010, 22:40
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

Если вам не нравятся шаблоны, значит, вы не умеете их готовить

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

PS. Ваша тема ваши правила.
Ответить с цитированием
  #77 (permalink)  
Старый 07.03.2010, 22:51
Интересующийся
Отправить личное сообщение для Gibor21 Посмотреть профиль Найти все сообщения от Gibor21
 
Регистрация: 05.03.2010
Сообщений: 16

Ну вы маниаки
Классный форум! Здорово, что я его нашел!
Ответить с цитированием
  #78 (permalink)  
Старый 07.03.2010, 22:59
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от JAre Посмотреть сообщение
Если вам не нравятся шаблоны, значит, вы не умеете их готовить

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

Пока не перестанете думать стереотипами так и будет казаться что есть борта или грани или линии или еще чего-нибудь.
Ответить с цитированием
  #79 (permalink)  
Старый 10.03.2010, 04:55
Интересующийся
Отправить личное сообщение для Gibor21 Посмотреть профиль Найти все сообщения от Gibor21
 
Регистрация: 05.03.2010
Сообщений: 16

Благодаря товарищу Octane все получилось.
Вот здесь все видно http://vinylroom.ru/index.php?productID=21
Но теперь встал перед другой проблемой:
Как сделать фокусировку на элементы <options> в контейнере <select> при клике по цветным иконкам?
Ответить с цитированием
  #80 (permalink)  
Старый 10.03.2010, 11:58
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

А зачем дублировать навигацию? Там <select> вообще не нужен. Текст каждой ссылки содержит название цвета, которое можно выводить куда угодно, осталось дописать изменение value какого-нибудь <input type="hidden">, чтобы отправить ваш цветовой индекс на сервер. Ну а сами индексы цветов хранить, например, в выдуманном атрибуте color элемента <a>:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
	<style type="text/css">
		.item .color {
			display: block;
			width: 32px;
			height: 32px;
			margin: 10px;
			text-indent: -9999px;
			cursor: pointer;
			border: 1px solid #000;
		}
		.brown {
			background: #930;
		}
		.lilac {
			background: #606;
		}
		.item .photo {
			background: url(http://javascript.ru/forum/images/ca_serenity/misc/progress.gif) no-repeat center center;
		}
	</style>
	
	<form action="" class="item">
		Выбран цвет: <span class="color-name">Фиолетовый</span>
		<input class="color-index" type="text" name="option_select_2" value="0:1" /> <!-- заменить тип на hidden -->
		<img class="photo" src="http://s60.radikal.ru/i169/1003/ce/51d329b4ca7c.jpg" alt="" width="278px" height="400px" />
		<a href="http://s004.radikal.ru/i206/1003/17/9edf0ad0c180.jpg" class="color brown" color="0:0">Коричневый</a>
		<a href="http://s60.radikal.ru/i169/1003/ce/51d329b4ca7c.jpg" class="color lilac" color="0:1">Фиолетовый</a>
	</form>

	<script type="text/javascript">
		function hasClass(element, className) {
			return (" " + element.className + " ").indexOf(" " + className + " ") != -1;
		}
		function findClass(className, root) {
			root = root || document;
			if (root.getElementsByClassName) {
				return root.getElementsByClassName(className);
			}
			if (root.querySelectorAll) {
				return root.querySelectorAll("." + className);
			}
			var elements = [], allElements = root.getElementsByTagName("*"), length = allElements.length, i = -1, j = 0;
			while (++i < length) {
				if (hasClass(allElements[i], className)) {
					elements[j++] = allElements[i];
				}
			}
			return elements;
		}
		
		(function () {

			function switchImage(node, src) {
				node.src = "адрес однопиксельного прозрачного gif";
				node.src = src;
			}
			function switchColorName(node, colorName) {
				node.innerHTML = colorName;
			}
			function switchColorIndex(node, colorIndex) {
				node.value = colorIndex;
			}

			var items = findClass("item"), i = items.length;
			while (i--) {
				items[i].onclick = function (e) {
					e = e || window.event;
					var target = e.target || e.srcElement;
					if (hasClass(target, "color")) {
	
						switchImage(findClass("photo", this)[0], target.href);
						switchColorName(findClass("color-name", this)[0], target.innerText || target.textContent);
						switchColorIndex(findClass("color-index", this)[0], target.getAttribute("color"));

						return false;
					}
				};
			}
		}());
	</script>
</body>
</html>



Вы на сайте забыли добавить однопиксельный прозрачный gif:
node.src = "адрес однопиксельного прозрачного gif";

Без него progress.gif не всегда можно будет увидеть во время загрузки.

Последний раз редактировалось Octane, 10.03.2010 в 12:02.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранить данные в файл? Возможно такое на JavaScript? Forgott Общие вопросы Javascript 35 26.06.2015 19:11
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
О наследовании событий, или как корректно его отменить. JCShen Events/DOM/Window 8 09.02.2010 00:00
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
А как зделать скрипт, чтобы например скрипт 1 заменялся скриптом 2? yura371 Общие вопросы Javascript 3 06.01.2009 22:40