Adding optgroups to select using javascript dynamically

后端 未结 2 460
小蘑菇
小蘑菇 2021-02-06 02:59

I have a dynamically populated (by ajax) select box with resulting options like that:


                        
    
提交评论

  • 2021-02-06 03:13

    This is not too tricky, you only need to move around your options a bit. Take them out of the document flow, add an optgroup in the place of the two associated options and append the options to that optgroup.

    Assuming that the options are actually sequential, as in your example, a possible, good old DOM scripting implementation is as follows:

    var destinationSelect = document.getElementById("destination");
    var options = destinationSelect.getElementsByTagName("option");
    
    var optgroups = [];
    
    while(options.length > 0) {
    
      var option1 = options[0];
      var option2 = options[1];
      var optgroup = document.createElement("optgroup");
      var label = option1.innerHTML.replace(/^[^\-]-/, "");
      optgroup.setAttribute("label", label);
      destinationSelect.removeChild(option1);
      destinationSelect.removeChild(option2);
      optgroup.appendChild(option1);
      optgroup.appendChild(option2);
    
      optgroups.push(optgroup);
    }
    
    for(var i = 0; i < optgroups.length; i ++) {
      destinationSelect.appendChild(optgroups[i]);
    }
    
    0 讨论(0)
  • 提交回复
    热议问题