在 javascript 函数中添加(一个在另一个下方)和删除下拉列表(select 元素)

Add (one below the other) and remove drop down lists (select element) inside javascript function

我有这个 javascript 代码。它是一组下拉列表和两个按钮(添加按钮和删除按钮)。

此图片为初始显示。

当我单击“添加项目”按钮时,我希望将新的下拉列表(“select”元素)添加到第一个下拉列表下方。目前,它正在添加到按钮的右侧。

代码:

case 'list_of_dropdowns':
          var sel = document.createElement('select');
          // ----------------------------------------------------
          //  1. SET ATTRIBUTE DISPLAY TO BLOCK
        // ----------------------------------------------------
          sel.setAttribute("display", "block");
          sel.setAttribute('id', attr_html_id);
          sel.setAttribute('onfocus', 'annotation_editor_on_metadata_focus(this)');
          sel.setAttribute('onchange', 'annotation_editor_on_metadata_update(this)');
          var option_id;
          var option_selected = false;
          for ( option_id in _via_attributes[_via_metadata_being_updated][attr_id].options ) 
          {
        var option_html_id = attr_html_id + '__' + option_id;
        var option = document.createElement('option');
        option.setAttribute('value', option_id);

        var option_desc  = _via_attributes[_via_metadata_being_updated][attr_id].options[option_id];
        if ( option_desc === '' || typeof(option_desc) === 'undefined' ) 
        {
          // option description is optional, use option_id when description is not present
          option_desc = option_id;
        }

        if ( option_id === attr_value ) 
        {
          option.setAttribute('selected', 'selected');
          option_selected = true;
        }
        option.innerHTML = option_desc;
        sel.appendChild(option);
        // ----------------------------------------------------
        //  CODE FOR "ADD ITEM" ELEMENT
        // ----------------------------------------------------

        var add_btn = document.createElement("BUTTON");   // Create a <button> element
        add_btn.innerHTML = "Add Item"; 
        add_btn.onclick = function () 
        {
            //alert("Add Button is clicked");
            var sel = document.createElement('select');
            sel.setAttribute("display", "block");
            col.appendChild(sel);
        };
        // ----------------------------------------------------
        //  CODE FOR "REMOVE ITEM" ELEMENT
        // ----------------------------------------------------
        var rem_btn = document.createElement("BUTTON");   // Create a <button> element
        rem_btn.innerHTML = "Remove Item";       
        rem_btn.onclick = function () 
        {
            alert("Remove Button is clicked");
        };
        
             }

         if ( ! option_selected ) 
         {
        sel.selectedIndex = '-1';
         }
            col.appendChild(sel);
           col.appendChild(add_btn);
           col.appendChild(rem_btn);
            break;

我尝试添加代码

sel.setAttribute("display", "block");

(a) under 1. SET ATTRIBUTE DISPLAY TO BLOCK

(b) 也在里面

add_btn.onclick=函数(){}

但是,那没有用。


目标:

我想做这两件事:

  1. 单击“添加项目”按钮后,新的下拉列表应添加到第一个下拉列表下方。
  2. 单击“删除项目”按钮时,应删除最后一个下拉列表(位于底部的列表或最近添加的列表)。

我添加了元素 - select 项和两个按钮到 div 元素。 为了让 select 元素出现在下方,我将样式设置为 'block'.

selectList.style.display = 'block';

为了删除 select 项,我添加了这一行:

div.lastChild?.remove();

在 RemoveSelect() 中

我把它放在 if 条件中,这样 div 中的前三个项目(第一个 select 项目和两个按钮)就不会被删除。

var div = document.createElement("list");
            
        var sel = document.createElement('select');
            setOptions(sel);
        div.appendChild(sel);
        var add_btn = document.createElement("BUTTON"); 
        add_btn.innerHTML = "Add Item"; 
       add_btn.addEventListener("click", AddSelect);
           div.appendChild(add_btn);

        var rem_btn = document.createElement("BUTTON");
        rem_btn.innerHTML = "Remove Item"; 
        rem_btn.addEventListener("click", RemoveSelect);
        div.appendChild(rem_btn);

       col.appendChild(div);
        

       function AddSelect() 
       {
              
              var selectList = document.createElement('select');
              selectList.id = 'mySelect';
              selectList.style.display = 'block';
              setOptions(selectList);

              div.appendChild(selectList);
       }

       function RemoveSelect() 
           {
         
        var x = div.childElementCount;
        if(x>3)
            {
         
             div.lastChild?.remove();
        }
       }