Преобразовать элемент в параметр

#javascript #dom #xmldom

#javascript #dom #xmldom

Вопрос:

Есть ли способ преобразовать объект Element в объект HTMLOption? У меня есть один код, который выглядит следующим образом:

 var request = getXMLHttpRequest();

            request.onreadystatechange = 
                function (){
                    if(request.readyState == 4 amp;amp; request.status == 200){
                        var regions = request.responseXML.firstChild;
                        document.getElementById('selectedRegiao').appendChild(regions.childNodes[1]);
                    }
                }

            request.open("get", "getRegions.php?country="   country,true);
            request.send();
  

Я знаю, что этот код не работает и не указан, но я думаю, этого достаточно, чтобы дать представление о том, чего я пытаюсь достичь. Элемент с идентификатором selectedRegiao является <select> тегом. <br>
regions — это XML. Это выглядит следующим образом:

 <option name="val1">val1</option>
<option name="val2">val2</option>
  

Я хотел быстрым и простым способом преобразовать его в тег Option. Я знаю, как это сделать долгим путем, но. Есть ли прямой и быстрый способ сделать это?

Комментарии:

1. Ответ может быть отрицательным, но решение правдоподобно…

Ответ №1:

Вы должны иметь возможность получать элементы параметра из XML с помощью

 var optsFromXml = regions.getElementsByTagName('option');
  

Это дало бы вам коллекцию опций для обработки в html. Например, добавление к некоторому <select> элементу:

 someSelect.appendChild (
          new Option( optsFromXml[0].getAttribute('name') )
); //=> appends option with value/text from name attribute
  

Комментарии:

1. @Kooilnc Судя по тому, как вы написали, вы, кажется, поняли, чего я хочу, но regions.getElementsByTagName(‘option’)[0] — это объект Element, а не объект Option, и someSelect.appendChild(optsFromXml[0]) теперь разрешен.

2. Вы правы, вы не можете добавлять просто так. Исправлено: смотрите правки и jsfiddle.net/AttTa

Ответ №2:

вы могли бы сделать что-то вроде этого:

 var newOpt = new Option(document.getElementById('selectedRegiao').innerHTML, document.getElementById('selectedRegiao').value);

selectObject.options[index] = newOpt;
  

Комментарии:

1. Вы действительно не поняли, что я написал… Нужна помощь?