Crear dinámicamente con Javascript select con optgroup

Supongamos que tenemos un array de objetos javascript. Cada objeto tiene tres propiedades: cod, tex, grupo.
Estos objetos son los elementos que queremos representar en un SELECT, y agrupados en OPTGROUPS.

Código:

var grupo_anterior="";var grupo;var opcion;

for (var i in array_options){    if(grupo_anterior!=array_options[i].grupo){        //reconocido nuevo grupo
        grupo          = document.createElement('OPTGROUP');        grupo.label    = array_options[i].grupo;        grupo_anterior = array_options[i].grupo;        select.appendChild(grupo);    }    opcion = document.createElement("OPTION");    opcion.setAttribute("value",array_options[i].cod);    //se le pone el texto visible
    opcion.innerHTML = array_options[i].tex;    //se incluye en el grupo
    select.appendChild(opcion);}

Este código sería lo fundamental para entender cómo funciona. Ha quedado pendiente la variable select, que representa el objeto select en el que inclñuiremos las opciones. Éste es necesario tomarlo, por ejemplo a partir del id con getElementById, o bien pasándolo como parámetro a la función en la que incluyamos este código.
Aquí un ejemplo completo que funciona y se puede probar copiandolo en una página html:

<script>

function Objeto(cod,tex,grupo){  this.cod=cod;  this.tex=tex;  this.grupo=grupo;}

function pintaOptions(){

  var select = document.getElementById('prueba');

  var array_options = new Array();  array_options['a'] = new Objeto('1','elemento 1','grupo1');  array_options['b'] = new Objeto('2','elemento 2','grupo1');  array_options['c'] = new Objeto('3','elemento 3','grupo2');  array_options['d'] = new Objeto('4','elemento 4','grupo2');

  var grupo_anterior="";  var grupo;  var opcion;

  for (var i in array_options){    if(grupo_anterior!=array_options[i].grupo){      grupo          = document.createElement('OPTGROUP');      grupo.label    = array_options[i].grupo;      grupo_anterior = array_options[i].grupo;      select.appendChild(grupo);    }    opcion = document.createElement("OPTION");    opcion.setAttribute("value",array_options[i].cod);    opcion.innerHTML = array_options[i].tex;    select.appendChild(opcion);  }}

</script>

<select id="prueba">    <script>pintaOptions();</script></select>

El resultado es:

37 Responses to “Crear dinámicamente con Javascript select con optgroup”

  1. 2012 Fashion ideas k…

    I guess what I’m trying to say is, I don’t think you can measure life in terms of years. I think longevity doesn’t necessarily have anything to do with happiness. I mean happiness comes from facing challenges and going out on a limb and taking risks…

  2. Venapro dice:

    … [Trackback]…

    [...] Informations on that Topic: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  3. … [Trackback]…

    [...] Informations on that Topic: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  4. … [Trackback]…

    [...] Informations on that Topic: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  5. … [Trackback]…

    [...] Read More: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  6. … [Trackback]…

    [...] Read More here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  7. … [Trackback]…

    [...] Read More: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  8. … [Trackback]…

    [...] There you will find 75002 more Infos: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  9. game free dice:

    … [Trackback]…

    [...] Read More here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  10. videos porno dice:

    … [Trackback]…

    [...] There you will find 65947 more Infos: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  11. … [Trackback]…

    [...] There you will find 77152 more Infos: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  12. objet pub dice:

    … [Trackback]…

    [...] Read More here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  13. Read More dice:

    … [Trackback]…

    [...] Read More Infos here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  14. Celexa Dose dice:

    … [Trackback]…

    [...] There you will find 60304 more Infos: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  15. … [Trackback]…

    [...] Read More: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  16. … [Trackback]…

    [...] Read More here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  17. … [Trackback]…

    [...] Read More here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  18. … [Trackback]…

    [...] Informations on that Topic: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  19. … [Trackback]…

    [...] Read More here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  20. … [Trackback]…

    [...] Read More Infos here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  21. pikalaina dice:

    … [Trackback]…

    [...] Read More: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  22. … [Trackback]…

    [...] Find More Informations here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  23. … [Trackback]…

    [...] Informations on that Topic: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  24. Lennot dice:

    Trackbacking……

    (Excerpt)…

  25. … [Trackback]…

    [...] There you will find 60168 more Infos: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  26. … [Trackback]…

    [...] Read More: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  27. symptoms of low vitiam d…

    Thanks for a marvelous posting! I genuinely enjoyed reading it, you might be a great author.I will make certain to bookmark your blog and will often come back sometime soon. I want to encourage that you continue your great posts, have a nice holiday we…

  28. My reviews dice:

    … [Trackback]…

    [...] Read More Infos here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  29. cash advance dice:

    … [Trackback]…

    [...] There you will find 72819 more Infos: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  30. … [Trackback]…

    [...] Read More: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  31. singles dating…

    Awesome blog! Do you have any tips for aspiring writers? I’m planning to start my own site soon but I’m a little lost on everything. Would you suggest starting with a free platform like WordPress or go for a paid option? There are so many choices out…

  32. free dating sites…

    Hello! Do you use Twitter? I’d like to follow you if that would be okay. I’m absolutely enjoying your blog and look forward to new posts….

  33. … [Trackback]…

    [...] There you will find 79918 more Infos: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  34. … [Trackback]…

    [...] Read More Infos here: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  35. … [Trackback]…

    [...] There you will find 67225 more Infos: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  36. … [Trackback]…

    [...] Read More: arcoe.es/2007/09/26/crear-dinamicamente-con-javascript-select-con-optgroup/ [...]…

  37. first dice:

    dating tips…

    I beloved up to you will receive performed proper here. The cartoon is tasteful, your authored material stylish. nevertheless, you command get got an edginess over that you would like be handing over the following. sick without a doubt come more before…

Leave a Response

You must be logged in to post a comment.