Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2014, 13:12
Аспирант
Отправить личное сообщение для ArtemGavrilenko Посмотреть профиль Найти все сообщения от ArtemGavrilenko
 
Регистрация: 25.04.2014
Сообщений: 37

Нужна помощь в реализайии
Добрый день!
Постараюсь описать ситуацию в двух словах
Есть некий массив
var goods = [
				{		
					name: {
						ru:'МТЗ',
						ua: 'МТЗ',
					},
					model: '82.1',
					country: {
						ru:'Беларусь',
						ua: 'Білорусь',
					},
					price: '1.11',
					images: 'img/belarus/mtz/МТЗ_82.1.jpeg',
				},
....
}

Нужно реализовать динамическую форму в которую будут подставляться данные из массива, в таком формате
Марка техники -> Выпадающий список
Модель техники -> Выпадающий список
Страна производитель -> Выпадающий список

Я пишу вот так (смотрю как реализовано здесь Вывод информации из массива в таблицу)
var form = document.createElement('form');
		        	form.idName = 'form-lizing';
		        		var input1 = document.createElement('input');
		        		input1.idName = 'input-lizing1';
		        		document.getElementById('input-lizing1').val = 'Марка техники';
		        		document.getElementById('table-lizing-traktor').appendChild(form);
		        		document.getElementById('form-lizing').appendChild(input1);


Но ничего не получается, скажите с чего начать? Если из изучения JavaScript то я этим и занимаюсь
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2014, 13:18
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Можно прибегнуть к библиотекам вроде этой https://github.com/blueimp/JavaScript-Templates
Создаешь шаблон в котором определяешь переменные, можно организовать цикл for и вывести n-количество элементов и тд.
Есть множество других подобных
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2014, 13:21
Аспирант
Отправить личное сообщение для ArtemGavrilenko Посмотреть профиль Найти все сообщения от ArtemGavrilenko
 
Регистрация: 25.04.2014
Сообщений: 37

Я только учу чистый JS без использование сторонних библиотек, та и нужно все это организовать на чистом JS
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2014, 13:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

ArtemGavrilenko,
попробуйте для начала написать ваш выпадающий список на html в итоге
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2014, 13:31
Аспирант
Отправить личное сообщение для ArtemGavrilenko Посмотреть профиль Найти все сообщения от ArtemGavrilenko
 
Регистрация: 25.04.2014
Сообщений: 37

<form id="model-traktor">
					<input type="label" value="Марка техники" class="input-label-marka"><br />
					<select>
						<option>...</option>
						<option>МТЗ</option>					
					</select>
					<br />

					<input type="label" value="Модель техники" class="input-label-model"><br />
					<select>
						<option>...</option>
						<option>82.1</option>
						<option>1221.2</option>					
					</select>
					<br />

					<input type="label" value="Страна производитель" class="input-label-strana"><br />
					<select>
						<option>...</option>
						<option>Белорусь</option>					
						<option>Украина</option>					
					</select>	
					<br />			
				</form>
Ответить с цитированием
  #6 (permalink)  
Старый 20.05.2014, 14:03
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<select id="_make">
  <option value="">- Марка -</option>
</select>
<select id="_model">
  <option value="">- Модель -</option>
</select>
<select id="_country">
  <option value="">- Страна -</option>
</select>
<script>
var goods = [
  {
    name: {
      ru:'МТЗ',
      ua: 'МТЗ'
    },
    model: '82.1',
    country: {
      ru:'Беларусь',
      ua: 'Білорусь'
    },
    price: '1.11',
    images: 'img/belarus/mtz/МТЗ_82.1.jpeg'
  },
  {
    name: {
      ru:'МТЗ',
      ua: 'МТЗ'
    },
    model: '82.1',
    country: {
      ru:'Россия',
      ua: 'Россия'
    },
    price: '1.11',
    images: 'img/belarus/mtz/МТЗ_82.1.jpeg'
  },
  {
    name: {
      ru:'МТЗ2',
      ua: 'МТЗ2'
    },
    model: '82.12',
    country: {
      ru:'Беларусь',
      ua: 'Білорусь'
    },
    price: '1.11',
    images: 'img/belarus/mtz/МТЗ_82.1.jpeg'
  },
  {
    name: {
      ru:'МТЗ3',
      ua: 'МТЗ3'
    },
    model: '82.13',
    country: {
      ru:'Беларусь',
      ua: 'Білорусь'
    },
    price: '1.11',
    images: 'img/belarus/mtz/МТЗ_82.1.jpeg'
  }
];

var language = 'ru';

function updateSelect(elem, list) {
  var _default = elem.children[0];
  while(elem.firstChild) {
    elem.removeChild(elem.firstChild);
  }
  elem.appendChild(_default);
  if (list) {
    for(var key in list) {
      if (list.hasOwnProperty(key)) {
        var option = document.createElement('option');
        option.innerHTML = option.value = key;
        elem.appendChild(option);
      }
    }
  }
  return elem;
};

(function(goods, language) {
  var _make = document.getElementById('_make');
  var _model = document.getElementById('_model');
  var _country = document.getElementById('_country');

  var optionsData = {};
  for(var i = 0; i < goods.length; i++) {
    var _vName = goods[i].name[language];
    var _vModel = goods[i].model;
    var _vCountry = goods[i].country[language];
    optionsData[_vName] = optionsData[_vName] || {};
    optionsData[_vName][_vModel] = optionsData[_vName][_vModel] || {};
    optionsData[_vName][_vModel][_vCountry] = optionsData[_vName][_vModel][_vCountry] || {};
  }

  updateSelect(_make, optionsData).onchange = function() {
    updateSelect(_model, optionsData[_make.value]).onchange();
  };
  _model.onchange = function() {
    updateSelect(_country, (optionsData[_make.value]||{})[_model.value]);
  }
})(goods, language);
</script>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 20.05.2014 в 14:07.
Ответить с цитированием
  #7 (permalink)  
Старый 20.05.2014, 14:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

devote,
на всякий случай
var _default = elem.children[0];
  while(elem.firstChild) {
    elem.removeChild(elem.firstChild);
  }
  elem.appendChild(_default);

=>
elem.options.length = 1;
Ответить с цитированием
  #8 (permalink)  
Старый 20.05.2014, 14:35
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

рони,
ну понятно дело что проверки натыкать нужно не тока тут) Это же черновой вариант.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 20.05.2014, 14:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от devote
проверки
непонял
просто 5 строк заменяются одной
Ответить с цитированием
  #10 (permalink)  
Старый 20.05.2014, 14:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от рони
просто 5 строк заменяются одной
а ты про это... ну да.. туплю) Забей
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Нужна ваша помощь! Что за flash плагин здесь используется? zemmi4 Flash 1 02.09.2013 21:10
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
Нужна помощь по слайдеру seoguru Работа 3 28.01.2013 22:02
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17