Hallo,
ik heb ergens een functie vandaan geplukt:
http://elmicoxcodes.blogspot.com/2007/02/innerhtml-and-select-option-in-ie.html
Werkt prima en wordt ook alleen uitgevoerd als de browser IE is.
De functie krijgt een string met options alleen wordt de option met selected="selected" niet goed verwerkt. Regel 52 en 53 zouden dat moeten verhelpen maar er mist iets...
Ik heb 2 alerts geplaatst, één met de originele tekst:
<option value=" " selected="selected">alle fabrikanten</option>
en één met de verwerkte tekst door de functie die de tekst '="selected">' mist:
<option value=" " selected>alle fabrikanten</option>
de overige options kloppen wel.
ik heb ergens een functie vandaan geplukt:
http://elmicoxcodes.blogspot.com/2007/02/innerhtml-and-select-option-in-ie.html
- function select_innerHTML(objeto,innerHTML){
- /******
- * select_innerHTML - corrige o bug do InnerHTML em selects no IE
- * Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228
- * Versão: 2.1 - 04/09/2007
- * Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
- * @objeto(tipo HTMLobject): o select a ser alterado
- * @innerHTML(tipo string): o novo valor do 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){//se não é option eu converto
- 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;
[*]
[*] 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
[*]}
Werkt prima en wordt ook alleen uitgevoerd als de browser IE is.
De functie krijgt een string met options alleen wordt de option met selected="selected" niet goed verwerkt. Regel 52 en 53 zouden dat moeten verhelpen maar er mist iets...
Ik heb 2 alerts geplaatst, één met de originele tekst:
<option value=" " selected="selected">alle fabrikanten</option>
en één met de verwerkte tekst door de functie die de tekst '="selected">' mist:
<option value=" " selected>alle fabrikanten</option>
de overige options kloppen wel.