代码之家  ›  专栏  ›  技术社区  ›  john c. j.

每个元素有三个单选按钮

  •  0
  • john c. j.  · 技术社区  · 3 年前

    下面是一个为每个元素添加单选按钮的函数。

    function createRadioButtons(buttons, checked, name, where) {
      buttons.forEach((el) => {
        const input = document.createElement('input');
        input.type = 'radio';
        input.id = el.toLowerCase();
        input.name = name;
        input.value = el.toLowerCase();
    
        if (el.toUpperCase() === checked.toUpperCase()) {
          input.checked = true;
        }
    
        const label = document.createElement('label');
        label.innerHTML = el;
        label.htmlFor = el.toLowerCase();
    
        where.appendChild(input);
        where.appendChild(label);
      });
    }
    
    document.querySelectorAll('article').forEach((el) => {
      createRadioButtons(['no', 'maybe', 'yes'], 'maybe', 'answer', el);
    });
    <article></article>
    <article></article>
    <article></article>

    name 前三个单选按钮的属性应为 answer1 ,的 名称 answer2 第三组按钮的属性应为 answer3 .

    function createRadioButtons(buttons, checked, name, where, i) {
       i++;
       the rest of the code
    }
    
    document.querySelectorAll('article').forEach((el) => {
      let i = 0;
      createRadioButtons(['no', 'maybe', 'yes'], 'maybe', 'answer', el, i);
    });
    

    然而,当我尝试它的时候,我最终还是出了问题,比如 对于每个 no 按钮和 答案2 对于每个 maybe 按钮。

    如何修复?谢谢。

    1 回复  |  直到 3 年前
        1
  •  2
  •   Barmar    3 年前

    这个 forEach name

    function createRadioButtons(buttons, checked, name, where) {
      buttons.forEach((el) => {
        const input = document.createElement('input');
        input.type = 'radio';
        input.id = el.toLowerCase();
        input.name = name;
        input.value = el.toLowerCase();
    
        if (el.toUpperCase() === checked.toUpperCase()) {
          input.checked = true;
        }
    
        const label = document.createElement('label');
        label.innerHTML = el;
        label.htmlFor = el.toLowerCase();
    
        where.appendChild(input);
        where.appendChild(label);
      });
    }
    
    document.querySelectorAll('article').forEach((el, index) => {
      createRadioButtons(['no', 'maybe', 'yes'], 'maybe', 'answer' + (index+1), el);
    });
    <article></article>
    <article></article>
    <article></article>