如何生成带有 select 选项标签的 div 和点击按钮时的某个按钮?

How do I generate a div with select-option tags and some button on the click on a button?

所以我有这段代码: 我希望使用 class 'members' 将生成的 div 附加到 div 我还有两个按钮:一个生成 div 另一个提交.我的控制台没有显示任何错误,但代码无法正常工作,它会冻结我的浏览器任何帮助??

HTML:

<main>
        <div class="members">

        </div>
        <form>
            <button class="addMember" type="button">Add Member <i class="fas fa-plus-square"></i> </button>
            <button type="submit" class="submit">Submit</button>
        </form>
    </main>

JS:


const generateDOM = function(e) {
    e.preventDefault();
    const memEl = document.createElement('div');
    memEl.classList.add("member")
    const counter = document.createElement('input');
    const num = document.createElement('input');
    const mem = document.createElement('select');
    let memOpt = document.createElement('option');
    const removeButton = document.createElement('button');

    //  setup the drop-down members
    for (let i = 0; i < totalInheritors.length; i++) {
        memOpt.value = totalInheritors[i];
        memOpt.text = totalInheritors[i];
        memOpt.classList.add('member-name')
        mem.appendChild(memOpt);
    }
    mem.classList.add('member-group')
    memEl.appendChild(mem);

    // setup the removeButton
    removeButton.innerHTML = '<i class="fas fa-trash"></i>';
    removeButton.classList.add("trash-btn");
    memEl.appendChild(removeButton);

    // setup counter attributes
    counter.setAttribute('type', 'range');
    counter.min = 1;
    counter.max = 10;
    counter.classList.add('mem-range')
    memEl.appendChild(counter);

    // setup counter attributes
    num.setAttribute('type', 'number');
    num.min = 1;
    num.max = 10;
    num.classList.add('mem-num')
    memEl.appendChild(num);

    // setting DOM elements
    memContainer.appendChild(memEl);
};

注意我想从字符串数组生成我的选项 我认为问题出在循环上,有没有关于合理循环的指南?

如您问题的评论中所述,发布的代码存在多个问题,这些问题要么需要修复,要么希望已经实现但尚未发布在您的代码片段中。我在你的代码中看到的主要问题是你只创建了一个 <option> 元素,并且只在循环中更新它的值和文本,而不是为每个条目创建一个 <option> 元素。

所以代替:

let memOpt = document.createElement('option');
// ...

//  setup the drop-down members
for (let i = 0; i < totalInheritors.length; i++) {
    memOpt.value = totalInheritors[i];
    memOpt.text = totalInheritors[i];
    memOpt.classList.add('member-name')
    mem.appendChild(memOpt);
}

将声明移到循环中:

for (let i = 0; i < totalInheritors.length; i++) {
  let memOpt = document.createElement('option');
  memOpt.value = totalInheritors[i];
  memOpt.text = totalInheritors[i];
  memOpt.classList.add('member-name')
  mem.appendChild(memOpt);
}

Here's a Fiddle 演示上面的内容。