如何附加由 'li' 包裹的复选框输入?

How can I append a checkbox input wrapped by the 'li'?

我设法在 'ul' 中输入了 'li',但我需要在 li 中输入一个复选框,但我似乎不知道该怎么做。

<body>
    <div class="card">
        
        <h1>To-do list</h1>
        
        <input type="text" id="taskInput" placeholder="Digite aqui sua tarefa">
        <button id="add">Adicionar</button>
        
        <ul id='tasks'>
            <li><input type="checkbox"> Tarefa 1</li>
        </ul>
        
    </div>
    <script>

      document.getElementById('add').onclick = function add() {

        const val = document.querySelector('input').value;
        const ul = document.getElementById('tasks');
        let li = document.createElement('li');
    
        li.appendChild(document.createTextNode(val));
        ul.appendChild(li);
      };

    </script>
</body>

您只需将类型设置为复选框即可。

   document.getElementById('add').onclick = function add() {
    var input = document.createElement("INPUT");
    input.setAttribute("type", "checkbox");
    const ul = document.getElementById('tasks');
    let li = document.createElement('li');

    li.appendChild(document.createTextNode(input));
    ul.appendChild(li);
  }; 

与其他元素相同,只是作为 'checkbox'

类型的输入

同样出于可访问性目的,最好使用 label 而不是文本节点。

const val = document.querySelector('input').value;
const ul = document.getElementById('tasks');

let li = document.createElement('li');

let checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.id = 'tasks-' + val;
checkbox.value = val;
checkbox.setAttribute('name', 'tasks');

let label = document.createElement('label');
label.htmlFor = checkbox.id;
label.innerText = val;

li.appendChild(checkbox);
li.appendChild(label);
ul.appendChild(li);

尝试创建元素 input 并将 type 指定为 checkbox 并将其添加到创建的元素li 首先,然后添加输入 的 文本值,最后将其附加到 ul:

    document.getElementById("add").onclick = function () {
      const val = document.querySelector("#taskInput").value; //specify the selector
      const ul = document.getElementById("tasks");
      let li = document.createElement("li");

      let input = document.createElement("input"); //add Input
      input.type = "checkbox"; //specify the type of input to checkbox
      li.appendChild(input);
      li.appendChild(document.createTextNode(val));
      ul.appendChild(li);
    };
  <div class="card">
    <h1>To-do list</h1>

    <input type="text" id="taskInput" placeholder="Digite aqui sua tarefa" />
    <button id="add">Adicionar</button>

    <ul id="tasks">
      <li><input type="checkbox" /> Tarefa 1</li>
    </ul>
  </div>

创建 li 后,只需向其附加一个复选框子项即可:

let chk = document.createElement('input');
chk.setAttribute('type', 'checkbox');

li.appendChild(chk)

您可以使用此代码

<script>

  document.getElementById('add').onclick = function add() {

    const val = document.querySelector('input').value;
    const ul = document.getElementById('tasks');
    let li = document.createElement('li');

    let input = document.createElement('input');
    input.type='checkbox'
    li.appendChild(input)
    li.appendChild(document.createTextNode(val));
    ul.appendChild(li);
  };

</script>
    *This method is faster and cleaner*
    
<script>
 document.getElementById('add').onclick = function add() {
      const ul = document.getElementById('tasks');
    
      const val = document.querySelector('input').value;
    
      ul.innerHTML += `<li>${val}</li>`;
 };
</script>