2009-08-11 7 views
1

J'ai trouvé quelques résultats pour cela sur google mais rien satisfaisant alors j'espérais que quelqu'un ici pourrait savoir.modifier sélectionner avec DOM

Il semble que peuplant un élément de sélection à l'aide innerHTML ne fonctionne pas dans IE

J'ai mis en place un fichier qui ne fait que cela et il fonctionne avec tout sauf IE, voici le code au cas où quelqu'un se soucie:

<html> 
<head></head> 

<body onload="populate();"> 
<script type="text/javascript"> 
    function populate() 
    { 
    document.getElementById("test").innerHTML = '<option id="a">works</option>'; 
    } 
</script> 

<select id="test"></select> 

</body> 
</html> 

Quelqu'un at-il une solution? Je ne veux pas tout enlever et puis utiliser manuellement appendChild comme je suis retourné html à partir d'une fonction différente, et il semble ridicule que cela ne fonctionne pas.

Toutes les idées seraient appréciées.

Répondre

3

EDIT: Cette réponse a été écrite avant que le PO ne dise qu'il ne voulait pas utiliser appendChild(). Je garderai cette réponse pour référence.


Cet article utilisera POJSF. (Cadre Plain Old JavaScript, le cadre tout autre cadre est fondé sur!)
Pour ceux qui ne l'obtiennent pas, c'est une mauvaise tentative d'humeur ...

Au lieu d'utiliser innerHTML, vous pouvez créer votre <option> en utilisant document.createElement()

var newOption = document.createElement('option'); 
newOption.label = 'works'; 

newOption.appendChild(document.createTextNode(newOption.label)); 

newOption.id = 'a'; 

document.getElementById('mySelect').appendChild(newOption); 

Si vous voulez supprimer tous <option> dans un <select>:

var selectEl = document.getElementById('mySelect'); 
for(var i = selectEl.children.length - 1; i >= 0; i--) { 
    selectEl.removeChild(selectEl.children[i]); 
} 
+0

innerText n'est pas supporté par Firefox, voir http://www.quirksmode.org/dom/w3c_html.html – karim79

+0

** @ karim79: ** Merci, corrigé. InnerText est vraiment juste nécessaire dans IE6, donc même si Firefox ne le supporte pas, il n'en a pas besoin. –

+0

+1 - maintenant que je ne savais pas. – karim79