Изменить параметры выбора поля с помощью Javascript - PullRequest
1 голос
/ 12 января 2012

Я пытаюсь создать функцию Javascript, которая будет принимать значение из одного поля выбора, а затем использовать его для сравнения массива JSON. Если какие-либо элементы массива соответствуют выбранному пользователем значению, функция добавит эти значения в другое поле выбора.

Логика:

  • Активировать функцию с помощью HTML-атрибута "onchange"
  • Получить выбранное пользователем значение из поля выбора
  • Сравните это значение с массивом JSON
  • Если значение массива == выбранное значение, добавить в другое поле выбора

Код:

//this function modifies a select field depending on what value was selected by its predecessor
        function tariffs()
        {   
            //variable selection equals the selected value chosen by the user in that field
            var selection = document.getElementById('tariff_net').options[document.getElementById('tariff_net').selectedIndex].value

            //for loop to go through JSON values to compare with the value chosen by the user
            for(var i = 0; i < values.preset_name.length ; i++)
                {
                    //if the JSON value equals the user selected value
                  if (values.preset_name[i] == selection)
                    {   
                        //append it to the "tariff_name" select field
                        var option = values.preset_name[i];
                        var selectfield = document.getElementById('tariff_name');
                        selectfield.appendChild(option);
                    }
                }


        }

Вот снимок экрана, показывающий два поля выбора (одно сверху повлияет на нижние параметры полей выбора)

http://i.imgur.com/B0eHS.png

enter image description here

В данный момент мой код не работает, и я получаю сообщение об ошибке JavaScript:

Не удалось преобразовать аргумент JavaScript arg 0 [nsIDOMHTMLInputElement.appendChild] [Break On This Error] selectfield.appendChild (опция);

Мне также интересно, как я могу заставить Javscript обновить поле выбора всех значений и затем заполнить его. Это предотвратит большое накопление дублированных опций при вызове функции.

Спасибо

1 Ответ

3 голосов
/ 12 января 2012

appendChild принимает элемент, а не строку.Выберите параметры, чтобы вам помочь конструктор:

var option = new Option(values.preset_name[i]); //Dom element instead of a string
var selectfield = document.getElementById('tariff_name');
selectfield.appendChild(option);
...