Il vous sera mieux d'avoir le script AJAX retourner un objet JSON contenant les options que vous voulez, puis en utilisant des méthodes DOM pour créer les nœuds d'option pour les faire correspondre.
Si vous devez vraiment le faire avec les chaînes HTML, la façon de le faire est d'écrire un tout nouvel élément <select>
avec les options à l'intérieur. Vous pouvez ensuite copier les informations des noeuds <option>
dans la sélection que vous visiez initialement.
var select= document.getElementById('a');
select.options.length= 0;
var div= document.createElement('div');
div.innerHTML= '<select>'+options+'</select>';
var options= div.firstChild.options;
for (var i= 0; i<options.length; i++) {
var o= options[i];
select.options[i]= new Option(o.text, o.value, o.selected);
}
Relatif, question précédente sur la façon de navigateur croisé d'ajouter une option: http://stackoverflow.com/questions/292101/browser-neutral-way-to-add-options-to-a-select-element-in -javascript/292122 # 292122 –
Voir http://stackoverflow.com/questions/1848588/why-does-html-work-and-not-innerhtml-or-appendchild/1849100#1849100 –