The non-DOM property innerHTML can’t add options to a tag select in Internet Explorer.
Example not working:
document.getElementById("my_select").innerHTML
= "<option value='1'>not</option>
<option value='2'>work</option>";
The correct way to insert options in a select is using appendChild or addOption functions. But that’s tiring if we are working with Ajax.
Use innerHTML is not the standard but it is very useful.
The function above, will help you to insert options like using innerHTML, in IE, Firefox or Opera.
Updated: now supports option-selected
Using my function:
var inner = "<option value='1'>Now</option> <option value='2'>work</option>"; select_innerHTML(document.getElementById("my_select"),inner);
The function. Add to your lib.
function select_innerHTML(objeto,innerHTML){ objeto.innerHTML = "" var selTemp = document.createElement("micoxselect") var opt; selTemp.id="micoxselect1" document.body.appendChild(selTemp) selTemp = document.getElementById("micoxselect1") selTemp.style.display="none" if(innerHTML.toLowerCase().indexOf("<option")<0){ innerHTML = "<option>" + innerHTML + "</option>" } innerHTML = innerHTML.toLowerCase(). replace(/<option/g,"<span").replace(/<\/option/g,"</span") selTemp.innerHTML = innerHTML for(var i=0;i<selTemp.childNodes.length;i++){ var spantemp = selTemp.childNodes[i]; if(spantemp.tagName){ opt = document.createElement("OPTION") if(document.all){ //IE objeto.add(opt) }else{ objeto.appendChild(opt) } //getting attributes for(var j=0; j<spantemp.attributes.length ; j++){ var attrName = spantemp.attributes[j].nodeName; var attrVal = spantemp.attributes[j].nodeValue; if(attrVal){ try{ opt.setAttribute(attrName,attrVal); opt.setAttributeNode(spantemp.attributes[j] .cloneNode(true)); }catch(e){} } } //getting styles if(spantemp.style){ for(var y in spantemp.style){ try{opt.style[y] = spantemp.style[y];}catch(e){} } } //value and text opt.value = spantemp.getAttribute("value") opt.text = spantemp.innerHTML //IE opt.selected = spantemp.getAttribute('selected'); opt.className = spantemp.className; } } document.body.removeChild(selTemp) selTemp = null }