Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как узнать id элемента массива (https://javascript.ru/forum/dom-window/47538-kak-uznat-id-ehlementa-massiva.html)

ArtemGavrilenko 27.05.2014 18:05

Как узнать id элемента массива
 
Добрый день! Есть массив вида

var goods = [
            {
            name: {
            ru:'МТЗ',
            ua: 'МТЗ',
            },
            model: 'МТЗ 82.1',
            country: {
            ru:'Беларусь',
            ua: 'Білорусь',
            },
            price: '204550',
            transmission : '18/4',
            engine: '59.6/81',
            wheel_formula: '4X4',
            images: '/img/lizingselhozhehniki/mtzbelorus/_82.1.jpg',
            identificator:'1',
            },
            {
            name: {
            ru:'МТЗ',
            ua: 'МТЗ',
            },
            model: 'МТЗ 892',
            country: {
            ru:'Беларусь',
            ua: 'Білорусь',
            },
            price: '215910',
            transmission: '18/4',
            engine: '65/88.7',
            wheel_formula: '4X4',
            images: '/img/lizingselhozhehniki/mtzbelorus/_892.jpg',
            identificator:'2',
            }
]

Функция для определения выбранных элементов
function build(){

                var _make = document.getElementById('_make');
                var _model = document.getElementById('_model');
                var _country = document.getElementById('_country');

                var a,b,c = 0;

                var form = document.body.children[0];
                var select1 = form.elements.make;
                var select2 = form.elements.model;
                var select3 = form.elements.country;

               for (var i = 0; i < select1.options.length; i++) {
                    var option = select1.options[i];
                    if(option.selected) {
                       a = option.value;
                       alert(a);
                    }
                }
                for (var i = 0; i < select2.options.length; i++) {
                    var option = select2.options[i];
                    if(option.selected) {
                        b = option.value;
                        alert(b);
                    }
                }
                for (var i = 0; i < select3.options.length; i++) {
                    var option = select3.options[i];
                    if(option.selected) {
                        c = option.value;
                        alert(c);
                    }
                }
            }


Выпадающие списки вида
<form id="form-lizing">
		<label id="label_make" name="label_make">Марка техники</label>
		<select id="_make" name="make">
		  <option value="">...</option>
		</select>
		<label id="label_model">Модель техники</label>
		<select id="_model" name="model">
		  <option value="">...</option>
		</select>
		<label id="label_country">Страна производитель</label>
		<select id="_country" name="country">
		  <option value="">...</option>
		</select>
		<input type="button" value="Показать характеристики" id="_build" onclick="build(); return false;" >
	</form>


Как получить на основе этого id выбранного элемента??

Zuenf 27.05.2014 21:17

Можно как-то так, если я правильно понял задачу:
function findProduct(name, model, country){
   for(var id in goods){
      var product = goods[id];
      if(product.model == model && (product.name.ru == name || product.name.ua == name) && (product.country.ru == country || product.country.ua == country))
         return product;
   }
   return false;
}

Т.е. находим продукт удовлетворяющий условию.

Zuenf 27.05.2014 21:43

А еще твою функцию build можно не хило так сократить:
var _make = document.querySelector('#_make>option:checked').value,
          _model = document.querySelector('#_model>option:checked').value,
          _country = document.querySelector('#_country>option:checked').value;

ArtemGavrilenko 28.05.2014 13:01

Так и не понял как все вместе слепить.
Пользователь выбрал в выпадающих списках определенный товар, и на основе выбранного товара в функцию передался id элемента массива
функция findProduct(name, model, country){} возвратила объект

<input type="button" value="Показать характеристики" id="_build" onclick="more(); return false;" >

На данном этапе если передать вручную то работает, а как передать динамически?

ArtemGavrilenko 28.05.2014 13:42

Решил! Всем спасибо кто откликнулся :)


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