Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.12.2012, 10:44
Новичок на форуме
Отправить личное сообщение для Tigerfox Посмотреть профиль Найти все сообщения от Tigerfox
 
Регистрация: 21.12.2012
Сообщений: 7

Три взаимосвязанных select
Помогите решить такую задачу. Есть данные которые изображены в виде Трех таблиц на рисунке:

Какой код вставить, чтобы выводило так:
1) Есть select - со списком из трех параметров облицовки (Пленка, Пластик, Металл)
2) Есть select - со списком ширины (500, 600, 700, и т.д.);
3)Есть select - со списком высоты (500, 600, 700, и т.д.);
При выборе типа Облицовки и размеров из таблицы (или данных) Результат цены выводил тот, который соответствует и облицовки и размерам?
Плюс ко всему, как сделать так чтобы при выборе типа облицовки тут же справа появлялась фото (картинка пленки, картинка, пластика, картинка металл). А ниже уже указываешь (так же списком - select) Ширину и Высоту. И итог показывалась цена в зависимости от: 1) от типа облицовки; 2) от высоты; 3) от ширины.

P.S. Все цены абсолютно не связаны между собой, то есть брать именно нужно из таблицы (или массива) - то есть не методом расчета
пожалуйста, очень нужно, срочно!

Вот здесь рисунок:

Последний раз редактировалось Tigerfox, 21.12.2012 в 12:33.
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2012, 11:09
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Tigerfox, для начала рисунка нет...из аттача не вставляйте...
Ответить с цитированием
  #3 (permalink)  
Старый 21.12.2012, 12:34
Новичок на форуме
Отправить личное сообщение для Tigerfox Посмотреть профиль Найти все сообщения от Tigerfox
 
Регистрация: 21.12.2012
Сообщений: 7

Сообщение от lord2kim Посмотреть сообщение
Tigerfox, для начала рисунка нет...из аттача не вставляйте...
Добавил рисунок
Ответить с цитированием
  #4 (permalink)  
Старый 21.12.2012, 12:55
жажду знаний
Отправить личное сообщение для bushstas Посмотреть профиль Найти все сообщения от bushstas
 
Регистрация: 17.07.2009
Сообщений: 202

охотно тебе помогу друг, но нифига не понял честно что требуется )))

нужно вручную создать массив исходя из таблицы, а потом выводить текст в цикле???? и как сюда привязать select???

единственная идея со смыслом мне приходит такая: есть три выпадающих списка (select) в первом список материалов, во втором список ширины, в третьем список высоты. Выбираешь все три и появляется конкретный товар с фоткой, описанием и ценой. Хоть что-нибудь я понял правильно???

и что мы имеем изначально? готовый массив? тупо картинку с таблицами, может быть html таблицы с данными или что? из чего исходить?

Последний раз редактировалось bushstas, 21.12.2012 в 13:00.
Ответить с цитированием
  #5 (permalink)  
Старый 21.12.2012, 14:24
Новичок на форуме
Отправить личное сообщение для Tigerfox Посмотреть профиль Найти все сообщения от Tigerfox
 
Регистрация: 21.12.2012
Сообщений: 7

Сообщение от bushstas Посмотреть сообщение
охотно тебе помогу друг, но нифига не понял честно что требуется )))

нужно вручную создать массив исходя из таблицы, а потом выводить текст в цикле???? и как сюда привязать select???

единственная идея со смыслом мне приходит такая: есть три выпадающих списка (select) в первом список материалов, во втором список ширины, в третьем список высоты. Выбираешь все три и появляется конкретный товар с фоткой, описанием и ценой. Хоть что-нибудь я понял правильно???

и что мы имеем изначально? готовый массив? тупо картинку с таблицами, может быть html таблицы с данными или что? из чего исходить?
Совершенно верно! Нужен Скрипт такой -
Есть три выпадающих списка (select):
1) в первом список материалов (Пленка, Пластик, Камень);
2) во втором список высоты (500, 600, 700, 800, 900 и т.д.);
3) в третьем список ширины (500, 600, 700, 800, 900 и т.д.);
4) Итог: цена из массива + фото типа облицовки

При выборе последнего списка (select - ширины) - появляется фото, которое соответствует из списка (select - типа облицовки - допустим, если выбрали Пленку то фото пленки, если Пластик то фото пластика, если камень то фото камня) и Цена, которая должна соответствовать и типу облицовки и высоте и ширине (так как в таблицах), то есть данные из массива (может не из массива) получается.

Последний раз редактировалось Tigerfox, 21.12.2012 в 14:27.
Ответить с цитированием
  #6 (permalink)  
Старый 21.12.2012, 14:34
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Tigerfox, как то так если из соответствующих таблиц
<html>
<head>
<title></title>
<script>
var d = document;

function result() {
	if (d.getElementById("lining").value == 0 || d.getElementById("width").value == 0 || d.getElementById("height").value == 0) {  }
	else {
		var table = d.getElementById(d.getElementById("lining").value), res;
		res = table.getElementsByTagName("tr")[d.getElementById("width").value].getElementsByTagName("td")[d.getElementById("height").value].innerHTML;
		d.getElementsById("result").innerHTML = res;
	}
}

window.onload = function () {
	d.getElementById("lining").onchange = function () { d.getElementById("img").src = (this.value == 0 ? "" : this.value+".jpg"); result(); };
	d.getElementById("width").onchange = d.getElementById("height").onchange = function () { result(); };
}
</script>
</head>
<body>
<table id="pellicle">
	<!-- данные для таблиц -->
</table>
<table id="plastic">
	<!-- данные для таблиц -->
</table>
<table id="metal">
	<!-- данные для таблиц -->
</table>
<select id="lining">
	<option value="0"></option>
	<option value="pellicle">Пленка</option>
	<option value="plastic">Пластик</option>
	<option value="metal">Металл</option>
</select>
<select id="width">
	<option value="0"></option>
	<option value="1">500мм</option>
	<option value="2">600мм</option>
	<option value="3">700мм</option>
	<option value="4">800мм</option>
	<option value="5">900мм</option>
</select>
<select id="height">
	<option value="0"></option>
	<option value="1">500мм</option>
	<option value="2">600мм</option>
	<option value="3">700мм</option>
	<option value="4">800мм</option>
	<option value="5">900мм</option>
</select>
Цена: <span id="result"></span><br>
<img src="" id="img">
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 21.12.2012, 17:17
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Самый простой способ, на мой взгляд:
1. Необходимо создать 3-х мерный массив, в котором 1 - материал, второе - ширина, 3 - высота.
Заполнить массив Табличными данными (если таблица есть на сайте - можешь забрать данные из неё, это делается с помощью вложенных циклов (в 3-х мерном массиве понадобится 3 цикла). Или заполнить данные руками. Например:
var dannie = [//массив содержит цены
[[[15], [17],[...],[35]],/*<--ширина*/[[16],[19],[...] /*<--высота*/]],//Способ бредовый, надеюсь инфа есть на сайте
[[/*ширина*/],[/*высота*/]], //пластик
[[/*ширина*/],[/*высота*/]]//металл
]



2. У нас есть массив с данными, есть 3 option. Вызов события поиска цены и картинки можно сделать на кнопку или blur (onblur без jQuery), при условии что в других option что-то выбрано (с помощью jQuery это можно проверить с помощью .attr()).

Картинку показать совсем просто, забрать value и по значению добавлять картинку (варианта всего 3, не замучиешься).

Выбор данных из массива так-же делаешь с помощью value, если ты правильно заполнишь массив, то твоё value option -a и будет ключём к данным массива.

Пример (с помощью jQuery):
var tmp1 
$('#lining option').each(function() {
   if ($(this).attr('selected')) {tmp1 = $(this).val()}
})
dannie[tmp1][tmp2][tmp3]


Задача довольно объёмная, в последнем пункте я не уверен, если он не сработает можешь добавлять selected при клике. Делай, выкладывай js код, помогу конкретнее по ходу.

Последний раз редактировалось tsigel, 21.12.2012 в 17:29.
Ответить с цитированием
  #8 (permalink)  
Старый 22.12.2012, 10:41
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Скорее всего проще будет сделать 3 двумерных массива.
Ответить с цитированием
  #9 (permalink)  
Старый 24.12.2012, 14:54
Новичок на форуме
Отправить личное сообщение для Tigerfox Посмотреть профиль Найти все сообщения от Tigerfox
 
Регистрация: 21.12.2012
Сообщений: 7

Сообщение от lord2kim Посмотреть сообщение
Tigerfox
<table id="pellicle">
<!-- данные для таблиц -->
</table>
<table id="plastic">
<!-- данные для таблиц -->
</table>
<table id="metal">
<!-- данные для таблиц -->
</table>
Спасибо большое!
А как правильно орфографически добавить данные для таблиц?
Ответить с цитированием
  #10 (permalink)  
Старый 24.12.2012, 14:57
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Tigerfox, не понял вопроса...вы не знаете HTML?
<table>
    <tr><th>заголовок первой строки</th><th>второй заголовок первой строки</th></tr>
    <tr><td>первая ячейка второй строки</td><td>вторая ячейка второй строки</td></tr>
</table>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор всех Select kvaleksandr Элементы интерфейса 12 27.10.2012 20:55
Два взаимосвязанных select, + добавление произвольных в форму winter Общие вопросы Javascript 17 27.07.2012 18:31
Возможно ли обращение к select по его name? Diablos Общие вопросы Javascript 15 26.09.2011 23:13
Как сохранить предыдущее значение select? MaxD Общие вопросы Javascript 3 21.07.2011 12:36
Проблема с динамическим формированием select elepsion jQuery 1 31.10.2010 14:31