Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2019, 22:30
Интересующийся
Отправить личное сообщение для l_mke Посмотреть профиль Найти все сообщения от l_mke
 
Регистрация: 30.06.2019
Сообщений: 18

Работа с JSON
Доброго времени суток!

Подскажите пожалуйста, у меня в форме есть:

<select class="input_form delivery select" name="delivery" required >
	<option value="">Выберите пункт</option>
</select>


Остальные пункты <option value=""></option> добавляются из JSON файла и именно тут должны находиться ключи объектов.


var requestURL = '/1234.json';
var request = new XMLHttpRequest();
request.open('GET', requestURL,true);
request.responseType = 'json';
request.send();
let selectMarc = document.querySelector('[name=delivery]');
let selectModels = document.querySelector('[name=models]');
request.onload = function(data) {
    var car = request.response;    
    ShowCarModels(car);
}
function ShowCarModels(car){
        var key = Object.keys(car);
        for (var i = 0; i <key.length; i++) {
            var myOption = document.createElement('option').cloneNode(true);
            myOption.setAttribute('value', key[i]);
            myOption.textContent = key[i];
        }
        selectMarc.appendChild(myOption);
        console.log(myOption); 
}


Проблема в том, что создается только один пункт option с именем последнего объекта, подскажите как вывести все имена объектов имеющиеся в файле в форму.
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2019, 22:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

l_mke,
18 строку перенесите на 20
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2019, 23:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от l_mke
.cloneNode(true);
это не нужно
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2019, 23:03
Интересующийся
Отправить личное сообщение для l_mke Посмотреть профиль Найти все сообщения от l_mke
 
Регистрация: 30.06.2019
Сообщений: 18

Спасибо большое)
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2019, 23:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

l_mke,
какой формат у car?
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2019, 15:25
Интересующийся
Отправить личное сообщение для l_mke Посмотреть профиль Найти все сообщения от l_mke
 
Регистрация: 30.06.2019
Сообщений: 18

json
Ответить с цитированием
  #7 (permalink)  
Старый 06.07.2019, 15:33
Интересующийся
Отправить личное сообщение для l_mke Посмотреть профиль Найти все сообщения от l_mke
 
Регистрация: 30.06.2019
Сообщений: 18

А еще можете подсказать, вот этот кусок кода выводит то что есть в объекте в другой select в соответствии какой был выбран Object.keys(car),

<select class="input_form models select" name="models" required>
	<option value="">Выберете пункт</option>
</select>


selectMarc.onchange = function(e){
            var marcValue = e.target.value;
            var modelOptions = '<option value="">Модель авто</option>';
            console.log(car[marcValue]);
            if(car[marcValue]){
                for (var j = 0; j < car[marcValue].length; j++) {
                    var myOptionModel = document.createElement('option');
                    myOptionModel.setAttribute('value', car[marcValue][j]);
                    myOptionModel.textContent = car[marcValue][j];
                    selectModels.appendChild(myOptionModel);
                }  
            }
        }



при выборе пункта он добавляет то что содержится в объекте , но если выбрать сначала один, а потом нажать на другой, то он не удаляет, то что относилось к другому пункту, подскажите пожалуйста, что можно с этим сделать
Ответить с цитированием
  #8 (permalink)  
Старый 06.07.2019, 16:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

l_mke,
if(car[marcValue]){
*!*
                selectModels.options.length = 1;
*/!*
                for (var j = 0; j < car[marcValue].length; j++) {
Ответить с цитированием
  #9 (permalink)  
Старый 07.07.2019, 13:15
Интересующийся
Отправить личное сообщение для l_mke Посмотреть профиль Найти все сообщения от l_mke
 
Регистрация: 30.06.2019
Сообщений: 18

Спасибо за помощь!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с JSON ASK9292 Node.JS 12 15.06.2017 18:48
работа с json файлом forwardin Общие вопросы Javascript 5 28.03.2017 21:46
JSON - работа с данными Зосимов Общие вопросы Javascript 9 31.01.2014 12:15
Json ответ, работа с data SergeyMiracle AJAX и COMET 7 03.07.2013 19:29
Разная работа скрипта с JSON на разных хостингах Rokugan Общие вопросы Javascript 1 03.10.2011 13:16