javascript - 如何在java脚本中单击后将带有<i>元素的<li>元素添加到<ul>

标签 javascript html function onclick

我在 java 脚本中单击后添加元素(关闭按钮)时遇到了小问题。

代码如下:

var add = document.getElementById("add-button");
add.addEventListener("click", function() {
  var ul = document.getElementById("tasks");
  var input = document.getElementById("new-task").value;

  var li = document.createElement("li");
  ul.appendChild(li);

  var i = document.createElement("i");
  ul.appendChild(i);

  li.innerHTML = input + i;
});
<html>

<head>
  <title>TODO supply a title</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://fonts.googleapis.com/css?family=Gloria+Hallelujah|Josefin+Sans:400,700&amp;subset=latin-ext" rel="stylesheet">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">


</head>

<body>
  <div class="wrapper">
    <h1>Dodaj nowe zadanie do listy</h1>
    <div class="to-do-container">
      <div class="input-data">
        <input id="new-task" type="text">
        <button id="add-button" type="button">Dodaj</button>
      </div>
      <ul id="tasks">
        <li>Zadzwonić do...<i class="fas fa-times"></i></li>
        <li>Odebrać dzieci z...<i class="fas fa-times"></i></li>
        <li>Kupić na obiad...<i class="fas fa-times"></i></li>
        <li>Umówić się na...<i class="fas fa-times"></i></li>
        <li>Załatwić na mieście...<i class="fas fa-times"></i></li>
        <li>Spotkać się z...<i class="fas fa-times"></i></li>
      </ul>
    </div>
  </div>


</body>

</html>

它给了我“HTML 元素对象”。我现在正在使用简单的任务学习 Js,但我认为这里有一些小细节。

提前感谢您的帮助。

最佳答案

当您尝试通过使用 innerHTML 将 Element 对象强制转换为字符串时,您会看到 [object HTMLElement]。您需要使用 innerText 设置 input 文本值,然后为 i 元素设置 appendChild(),如你已经在其他地方了。

另请注意,您需要将类添加到 i,这可以通过使用 classList.add() 来完成。试试这个:

var add = document.getElementById("add-button");
add.addEventListener("click", function() {
  var i = document.createElement("i");
  i.classList.add('fas', 'fa-times');

  var li = document.createElement("li");
  var input = document.getElementById("new-task").value;
  li.innerText = input;
  li.appendChild(i);
  
  var ul = document.getElementById("tasks");
  ul.appendChild(li);
});
<link href="https://fonts.googleapis.com/css?family=Gloria+Hallelujah|Josefin+Sans:400,700&amp;subset=latin-ext" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<div class="wrapper">
  <h1>Dodaj nowe zadanie do listy</h1>
  <div class="to-do-container">
    <div class="input-data">
      <input id="new-task" type="text">
      <button id="add-button" type="button">Dodaj</button>
    </div>
    <ul id="tasks">
      <li>Zadzwonić do...<i class="fas fa-times"></i></li>
      <li>Odebrać dzieci z...<i class="fas fa-times"></i></li>
      <li>Kupić na obiad...<i class="fas fa-times"></i></li>
      <li>Umówić się na...<i class="fas fa-times"></i></li>
      <li>Załatwić na mieście...<i class="fas fa-times"></i></li>
      <li>Spotkać się z...<i class="fas fa-times"></i></li>
    </ul>
  </div>
</div>

关于javascript - 如何在java脚本中单击后将带有<i>元素的<li>元素添加到<ul>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52202315/

相关文章:

javascript - for 循环仅适用于最后一项

javascript - 事件发生时如何将值传递给 Django 中的 url?

html - 换行符是否适用于所有浏览器中的表单?

javascript - 高分辨率 HTML5 Canvas 屏幕截图

c++ - 我不明白为什么这个 while 循环是无止境的

jquery函数插件,返回值类似于ajax中的$.get

javascript - 在javascript中从外部源获取json

javascript - 使用 javascript 将值设置为网格中的文本框

javascript - ng-animate 不触发动画

javascript - 如何在点击html表单的不同按钮时调用不同的servlet