微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要帮助更改克隆待办事项列表以使其记录 3 个输出而不是一个 (javascript/html/css/JSON)

如何解决需要帮助更改克隆待办事项列表以使其记录 3 个输出而不是一个 (javascript/html/css/JSON)

我开始更改复制的代码,因此它不是一次发出一个语句的“待办事项”列表,而是想将其更改为一次发出 3 个语句并登录一行。

我可以再添加 2 个盒子,但是当我按下紫色按钮让它运行时,它只记录其中一个盒子,而在其他 2 个盒子(我制作的新盒子)中写入,最终看起来在按下紫色按钮之前像这样:

enter image description here

这会导致注销:

enter image description here

只是名称,但电子邮件不会,它会留下电子邮件和日期的印记(与“用户名框”不同)

尝试修改 eth 代码,但不明白如何操作它以使其显示我想要的内容并记录三件事。你能帮我看看如何做到这一点。以下是 HTML、CSS 和 JS 的 3 个文件

// getting all required elements
const inputBox = document.querySelector(".inputField input");
const addBtn = document.querySelector(".inputField button");
const todoList = document.querySelector(".todoList");
const deleteallBtn = document.querySelector(".footer button");
// onkeyup event
inputBox.onkeyup = ()=>{
  let userEnteredValue = inputBox.value; //getting user entered value
  if(userEnteredValue.trim() != 0){ //if the user value isn't only spaces
    addBtn.classList.add("active"); //active the add button
  }else{
    addBtn.classList.remove("active"); //unactive the add button
  }
}


showTasks(); //calling showTask function
addBtn.onclick = ()=>{ //when user click on plus icon button
  let userEnteredValue = inputBox.value; //getting input field value
  let getLocalStorageData = localStorage.getItem("New Todo"); //getting localstorage
  if(getLocalStorageData == null){ //if localstorage has no data
    listArray = []; //create a blank array
  }else{
    listArray = JSON.parse(getLocalStorageData);  //transforming json string into a js object
  }
  listArray.push(userEnteredValue); //pushing or adding new value in array
  localStorage.setItem("New Todo",JSON.stringify(listArray)); //transforming js object into a json string
  showTasks(); //calling showTask function
  addBtn.classList.remove("active"); //unactive the add button once the task added
}
function showTasks(){
  let getLocalStorageData = localStorage.getItem("New Todo");
  if(getLocalStorageData == null){
    listArray = [];
  }else{
    listArray = JSON.parse(getLocalStorageData); 
  }
  const pendingTasksNumb = document.querySelector(".pendingTasks");
  pendingTasksNumb.textContent = listArray.length; //passing the array length in pendingtask
  if(listArray.length > 0){ //if array length is greater than 0
    deleteallBtn.classList.add("active"); //active the delete button
  }else{
    deleteallBtn.classList.remove("active"); //unactive the delete button
  }
  let newLiTag = "";
  listArray.forEach((element,index) => {
    newLiTag += `<li>${element}<span class="icon" onclick="deleteTask(${index})"><i class="fas fa-trash"></i></span></li>`;
  });
  todoList.innerHTML = newLiTag; //adding new li tag inside ul tag
  inputBox.value = ""; //once task added leave the input field blank
}
// delete task function
function deleteTask(index){
  let getLocalStorageData = localStorage.getItem("New Todo");
  listArray = JSON.parse(getLocalStorageData);
  listArray.splice(index,1); //delete or remove the li
  localStorage.setItem("New Todo",JSON.stringify(listArray));
  showTasks(); //call the showTasks function
}
// delete all tasks function
deleteallBtn.onclick = ()=>{
  listArray = []; //empty the array
  localStorage.setItem("New Todo",JSON.stringify(listArray)); //set the item in localstorage
  showTasks(); //call the showTasks function
}
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700&display=swap');
*{
  margin: 0;
  padding: 0;
  Box-sizing: border-Box;
  font-family: 'Poppins',sans-serif;
}
::selection{
  color: #ffff;
  background: rgb(142,73,232);
}
body{
  width: 100%;
  height: 100vh;
  /* overflow: hidden; */
  padding: 10px;
  background: linear-gradient(to bottom,#68EACC 0%,#497BE8 100%);
}
.wrapper{
  background: #fff;
  max-width: 1200px;
  width: 100%;
  margin: 120px auto;
  padding: 25px;
  border-radius: 5px;
  Box-shadow: 0px 10px 15px rgba(0,0.1);
}
.wrapper header{
  font-size: 30px;
  font-weight: 600;
}
.wrapper .inputField{
  margin: 20px 0;
  width: 100%;
  display: flex;
  height: 45px;
}
.inputField input{
  width: 85%;
  height: 100%;
  outline: none;
  border-radius: 3px;
  border: 1px solid #ccc;
  font-size: 17px;
  padding-left: 15px;
  transition: all 0.3s ease;
}
.inputField input:focus{
  border-color: #8E49E8;
}
.inputField button{
  width: 100px;
  height: 100%;
  border: none;
  color: #fff;
  margin-left: 5px;
  font-size: 21px;
  outline: none;
  background: #8E49E8;
  cursor: pointer;
  border-radius: 3px;
  opacity: 0.6;
  pointer-events: none;
  transition: all 0.3s ease;
}
.inputField button:hover,.footer button:hover{
  background: #721ce3;
}
.inputField button.active{
  opacity: 1;
  pointer-events: auto;
}
.wrapper .todoList{
  max-height: 250px;
  overflow-y: auto;
}
.todoList li{
  position: relative;
  list-style: none;
  height: 45px;
  line-height: 45px;
  margin-bottom: 8px;
  background: #f2f2f2;
  border-radius: 3px;
  padding: 0 15px;
  cursor: default;
  overflow: hidden;
}
.todoList li .icon{
  position: absolute;
  right: -45px;
  background: #e74c3c;
  width: 45px;
  text-align: center;
  color: #fff;
  border-radius: 0 3px 3px 0;
  cursor: pointer;
  transition: all 0.2s ease;
}
.todoList li:hover .icon{
  right: 0px;
}
.wrapper .footer{
  display: flex;
  width: 100%;
  margin-top: 20px;
  align-items: center;
  justify-content: space-between;
}
.footer button{
  padding: 6px 10px;
  border-radius: 3px;
  border: none;
  outline: none;
  color: #fff;
  font-weight: 400;
  font-size: 16px;
  margin-left: 5px;
  background: #8E49E8;
  cursor: pointer;
  user-select: none;
  opacity: 0.6;
  pointer-events: none;
  transition: all 0.3s ease;
}
.footer button.active{
  opacity: 1;
  pointer-events: auto;
}
<!DOCTYPE html>

<html lang="en">
<head>
    <Meta charset="UTF-8">
    <Meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>To Do App</title>
    <link rel="stylesheet" href="todo.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"/>
</head>
<body>
  <div class="wrapper">
    <header>Support Tickets</header>

    <div class="inputField" >
      <input type="text" placeholder="Users Name" required>

      
      <input type="email" placeholder="Users Email" required>
      <input type="text" placeholder="Date" required>

      
      <button><i class="fas fa-plus"></i></button>
    </div>

    
    <ul class="todoList">
      <!-- data are comes from local storage -->
    </ul>
    <div class="footer">
      <span>You have <span class="pendingTasks"></span> pending tasks</span>
      <button>Clear All</button>
    </div>
  </div>
  <script src="todo.js"></script>
</body>
</html>

解决方法

首先,您从未使用过 emaildate 的值,因此只显示了 name。 我对您的 listArray 结构进行了一些更改,并将其设为一个对象,类似这样

let userEnteredValue = {
  name: inputBox.value,email: email.value,date: date.value
};

为了更好的理解和代码可读性。 然后我对您的 css 进行了一些更改以将其显示在一行中。

我还添加了一个按钮来代替垃圾桶图标,因为我没有引导程序,但您可以再次用图标替换按钮

const inputBox = document.querySelector(".inputField input");
      const email = document.querySelector("#email");
      const date = document.querySelector("#date");
      const addBtn = document.querySelector(".inputField button");
      const todoList = document.querySelector(".todoList");
      const deleteAllBtn = document.querySelector(".footer button");
      // onkeyup event
      inputBox.onkeyup = () => {
        let userEnteredValue = inputBox.value; //getting user entered value
        if (userEnteredValue.trim() != 0) {
          //if the user value isn't only spaces
          addBtn.classList.add("active"); //active the add button
        } else {
          addBtn.classList.remove("active"); //unactive the add button
        }
      };

      showTasks(); //calling showTask function
      addBtn.onclick = () => {
        //when user click on plus icon button
        let userEnteredValue = {
          name: inputBox.value,date: date.value,}; //getting input field value
        console.log(userEnteredValue);
        let getLocalStorageData = localStorage.getItem("New Todo"); //getting localstorage
        if (getLocalStorageData == null) {
          //if localstorage has no data
          listArray = []; //create a blank array
        } else {
          listArray = JSON.parse(getLocalStorageData); //transforming json string into a js object
        }

        listArray.push(userEnteredValue); //pushing or adding new value in array
        localStorage.setItem("New Todo",JSON.stringify(listArray)); //transforming js object into a json string
        showTasks(); //calling showTask function
        addBtn.classList.remove("active"); //unactive the add button once the task added
      };
      function showTasks() {
        todoList.innerHTML = "";
        let getLocalStorageData = localStorage.getItem("New Todo");
        if (getLocalStorageData == null) {
          listArray = [];
        } else {
          listArray = JSON.parse(getLocalStorageData);
        }
        const pendingTasksNumb = document.querySelector(".pendingTasks");
        pendingTasksNumb.textContent = listArray.length; //passing the array length in pendingtask
        if (listArray.length > 0) {
          //if array length is greater than 0
          deleteAllBtn.classList.add("active"); //active the delete button
        } else {
          deleteAllBtn.classList.remove("active"); //unactive the delete button
        }

        // console.log(listArray);
        listArray.forEach((element,index) => {
          let newLiTag = "";
          newLiTag = `<li>${element.name} ${element.email} ${element.date}<span class="icon" onclick="deleteTask(${index})"><button>Delete</button></span></li><br>`;
          todoList.insertAdjacentHTML("afterbegin",newLiTag); //adding new li tag inside ul tag
        });
        // console.log(newLiTag);

        inputBox.value = "";
        email.value = "";
        date.value = ""; //once task added leave the input field blank
      }
      // delete task function
      function deleteTask(index) {
        let getLocalStorageData = localStorage.getItem("New Todo");
        listArray = JSON.parse(getLocalStorageData);
        console.log(listArray);
        listArray.splice(index,1); //delete or remove the li
        localStorage.setItem("New Todo",JSON.stringify(listArray));
        showTasks(); //call the showTasks function
      }
      // delete all tasks function
      deleteAllBtn.onclick = () => {
        todoList.innerHTML = "";
        listArray = []; //empty the array
        localStorage.setItem("New Todo",JSON.stringify(listArray)); //set the item in localstorage
        showTasks(); //call the showTasks function
      };
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700&display=swap");
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: "Poppins",sans-serif;
      }
      ::selection {
        color: #ffff;
        background: rgb(142,73,232);
      }
      body {
        width: 100%;
        height: 100vh;
        /* overflow: hidden; */
        padding: 10px;
        background: linear-gradient(to bottom,#68eacc 0%,#497be8 100%);
      }
      .wrapper {
        background: #fff;
        max-width: 1200px;
        width: 100%;
        margin: 120px auto;
        padding: 25px;
        border-radius: 5px;
        box-shadow: 0px 10px 15px rgba(0,0.1);
      }
      .wrapper header {
        font-size: 30px;
        font-weight: 600;
      }
      .wrapper .inputField {
        margin: 20px 0;
        width: 100%;
        display: flex;
        height: 45px;
      }
      .inputField input {
        width: 85%;
        height: 100%;
        outline: none;
        border-radius: 3px;
        border: 1px solid #ccc;
        font-size: 17px;
        padding-left: 15px;
        transition: all 0.3s ease;
      }
      .inputField input:focus {
        border-color: #8e49e8;
      }
      .inputField button {
        width: 100px;
        height: 100%;
        border: none;
        color: #fff;
        margin-left: 5px;
        font-size: 21px;
        outline: none;
        background: #8e49e8;
        cursor: pointer;
        border-radius: 3px;
        opacity: 0.6;
        pointer-events: none;
        transition: all 0.3s ease;
      }
      .inputField button:hover,.footer button:hover {
        background: #721ce3;
      }
      .inputField button.active {
        opacity: 1;
        pointer-events: auto;
      }
      .wrapper .todoList {
        max-height: 250px;
        overflow-y: auto;
      }

      .todoList li {
        position: relative;
        list-style: none;
        height: 45px;
        line-height: 45px;
        margin-bottom: 8px;
        background: #f2f2f2;
        border-radius: 3px;
        padding: 0 15px;
        cursor: default;
        overflow: hidden;
      }
      .todoList li .icon {
        position: absolute;
        right: -45px;
        background: #e74c3c;
        width: 45px;
        text-align: center;
        color: #fff;
        border-radius: 0 3px 3px 0;
        cursor: pointer;
        transition: all 0.2s ease;
      }
      .todoList li:hover .icon {
        right: 20px;
      }
      .wrapper .footer {
        display: flex;
        width: 100%;
        margin-top: 20px;
        align-items: center;
        justify-content: space-between;
      }
      .footer button {
        padding: 6px 10px;
        border-radius: 3px;
        border: none;
        outline: none;
        color: #fff;
        font-weight: 400;
        font-size: 16px;
        margin-left: 5px;
        background: #8e49e8;
        cursor: pointer;
        user-select: none;
        opacity: 0.6;
        pointer-events: none;
        transition: all 0.3s ease;
      }
      .footer button.active {
        opacity: 1;
        pointer-events: auto;
      }
      .todoList li {
        font-size: 25px;
        width: 100%;
        display: block;
        word-spacing: 250px;
      }
<div class="wrapper">
      <header>Support Tickets</header>

      <div class="inputField">
        <input type="text" id="name" placeholder="Users Name" required />

        <input type="email" id="email" placeholder="Users Email" required />
        <input type="text" id="date" placeholder="Date" required />

        <button><i class="fas fa-plus"></i></button>
      </div>

      <ul class="todoList">
        <!-- data are comes from local storage -->
      </ul>
      <div class="footer">
        <span>You have <span class="pendingTasks"></span> pending tasks</span>
        <button>Clear All</button>
      </div>
    </div>

由于 localStorage 不会在此代码段中运行,因此下面是输出屏幕截图 enter image description here

enter image description here

现在,一切都如您所愿!

还有你的代码,我编辑的代码需要大量重构以提高可读性和效率......

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?