“编辑文本”按钮不起作用

Edit Text button not working

本文关键字:按钮 不起作用 编辑文本 编辑 文本      更新时间:2023-09-26

我正在尝试制作一个编辑"按钮",当单击该按钮时,将启动一个提示窗口,您可以在其中输入将替换旧文本的新文本。我认为,问题是html中没有"编辑按钮",它是在将项目添加到待办事项列表时创建的。因此,我在定位要替换的文本时遇到了问题。

现在,"编辑项目"功能将"编辑"按钮替换为我想要的文本,而不是"待办事项"项目。任何建议都将不胜感激!!

<html>
    <head>
        <title> To Do List</title>
        <style>
        body{
            font: sans-serif;
            color: #00b33c;
            background-color: #ffffff;
        }
        p{
            font: sans-serif;
            width: auto;
        }
        ul {
            list-style: none;
            padding: 0; 
            margin: 0; 
            width: 500px;
        }
        li {
            border: 2px solid #fff; 
            background: #e5ffff; 
            padding: 10px 10px; 
            color: #000000;
            width: 500px;
        }
        li span{ 
            padding-left: 10px;
            padding-right: 200px;

        }
        .checked{
            text-decoration: line-through;
            font-weight: bold;
            color: #ff0000;
        }
        li span2{
            position: relative;
            padding: 0 5px 0 5px;
            margin: 10px;
            font-size: 12px; 
            cursor: pointer;
            border: 1px solid #000000;
            background-color: #ffffff;
        }
        li span3{
            font-size: 12px;
            padding: 0 5px 0 5px;
            position: relative;
            cursor: pointer;
            border: 1px solid #000000;
            background-color: #ffffff;
        }
        }
        </style>
    </head>
    <body>
<h1> To Do List</h1>
<p>
    <input type="text" id="inItemText"> 
    <button id="btnAdd">Add</button>
</p>

<ul id="todoList"></ul>
<script src="todolist.js"></script>
    </body>
</html>

Javascript

//CheckBox Feature
function updateStatus() {
  var cbId = this.id.replace("cb_", "");
  var itemText = document.getElementById("item_" + cbId);
  if (this.checked) {
    itemText.className = "checked";
  } else {
    itemText.className = "";
  }
}
//Delete Button
function deleteItem(){
    this.parentNode.parentNode.removeChild(this.parentNode);
     inItemText.focus();
     inItemText.select();
    }
//Edit Button
 function editItem(e){
 var newText = prompt("What would you like to change this to?");
    if(newText !== null){
        this.textContent = newText;
         }
     else{
        alert("You must add something");
     }

    }
//Add new item to To-Do List
function addNewItem(list, itemText) {
  totalItems++;
  var listItem = document.createElement("li");
  var checkbox = document.createElement("input");
  checkbox.type = "checkbox";
  checkbox.id = "cb_" + totalItems;
  checkbox.onclick = updateStatus;
  var span = document.createElement("span");
  span.id = "item_" + totalItems;
  span.textContent = itemText;

  var spanDelete = document.createElement("span2");
  spanDelete.setAttribute("id", listItem.id);
  spanDelete.setAttribute("class", "delete");
  spanDelete.textContent = "DELETE";
  spanDelete.onclick = deleteItem;

  var spanEdit = document.createElement("span3")
  spanEdit.id = "editId_" + totalItems;
  spanEdit.textContent = "EDIT";
  spanEdit.onclick = editItem;
  listItem.appendChild(checkbox);
  listItem.appendChild(span);
  listItem.appendChild(spanDelete);
  listItem.appendChild(spanEdit);

  list.appendChild(listItem);
}
//Add item to list with ENTER KEY
var totalItems = 0;
var inItemText = document.getElementById("inItemText");
inItemText.focus();
inItemText.onkeyup = function(event){
    if(event.which === 13){
        var itemText = inItemText.value;
        if (!itemText || itemText === "" || itemText === " ") {
        return false;
    }
      addNewItem(document.getElementById("todoList"), itemText);
  inItemText.focus();
  inItemText.select();
}

//Add item to To-Do List with "Add" Button
var btnNew = document.getElementById("btnAdd");
btnNew.onclick = function() {
  var itemText = inItemText.value;
  if (!itemText || itemText === "" || itemText === " ") {
    return false;
  }
  btnNew.onkeyup = function(event){
    if(event.which == 13){
        if (!itemText || itemText === "" || itemText === " ") {
    return false;
    }
  }
}
  addNewItem(document.getElementById("todoList"), itemText);
  inItemText.focus();
  inItemText.select();
}
}

在代码中查看此函数

function editItem(e){
 var newText = prompt("What would you like to change this to?");
    if(newText !== null){
        this.textContent = newText;
         }
     else{
        alert("You must add something");
     }
    }

将此行this.textContent = newText;更改为

this.previousElementSibling.previousElementSibling.innerHTML = newText;

这是的片段

//CheckBox Feature
function updateStatus() {
  var cbId = this.id.replace("cb_", "");
  var itemText = document.getElementById("item_" + cbId);
  if (this.checked) {
    itemText.className = "checked";
  } else {
    itemText.className = "";
  }
}
//Delete Button
function deleteItem(){
    this.parentNode.parentNode.removeChild(this.parentNode);
     inItemText.focus();
     inItemText.select();
    }
//Edit Button
 function editItem(e){
 var newText = prompt("What would you like to change this to?");
    if(newText !== null){
        this.previousElementSibling.previousElementSibling.innerHTML = newText;
         }
     else{
        alert("You must add something");
     }
    }
//Add new item to To-Do List
function addNewItem(list, itemText) {
  totalItems++;
 var listItem = document.createElement("li");
  var checkbox = document.createElement("input");
  checkbox.type = "checkbox";
  checkbox.id = "cb_" + totalItems;
  checkbox.onclick = updateStatus;
  var span = document.createElement("span");
  span.id = "item_" + totalItems;
  span.textContent = itemText;
  var spanDelete = document.createElement("span2");
  spanDelete.setAttribute("id", listItem.id);
  spanDelete.setAttribute("class", "delete");
  spanDelete.textContent = "DELETE";
  spanDelete.onclick = deleteItem;
  var spanEdit = document.createElement("span3")
  spanEdit.id = "editId_" + totalItems;
  spanEdit.textContent = "EDIT";
  spanEdit.onclick = editItem;
  listItem.appendChild(checkbox);
  listItem.appendChild(span);
  listItem.appendChild(spanDelete);
  listItem.appendChild(spanEdit);
  list.appendChild(listItem);
}
//Add item to list with ENTER KEY
var totalItems = 0;
var inItemText = document.getElementById("inItemText");
inItemText.focus();
inItemText.onkeyup = function(event){
    if(event.which === 13){
        var itemText = inItemText.value;
        if (!itemText || itemText === "" || itemText === " ") {
        return false;
    }
      addNewItem(document.getElementById("todoList"), itemText);
  inItemText.focus();
  inItemText.select();
}
//Add item to To-Do List with "Add" Button
var btnNew = document.getElementById("btnAdd");
btnNew.onclick = function() {
  var itemText = inItemText.value;
  if (!itemText || itemText === "" || itemText === " ") {
    return false;
  }
  btnNew.onkeyup = function(event){
    if(event.which == 13){
        if (!itemText || itemText === "" || itemText === " ") {
    return false;
    }
  }
}
  addNewItem(document.getElementById("todoList"), itemText);
  inItemText.focus();
  inItemText.select();
}
}
  
        body{
            font: sans-serif;
            color: #00b33c;
            background-color: #ffffff;
        }
        p{
            font: sans-serif;
            width: auto;
        }
        ul {
            list-style: none;
            padding: 0; 
            margin: 0; 
            width: 500px;
        }
        li {
            border: 2px solid #fff; 
            background: #e5ffff; 
            padding: 10px 10px; 
            color: #000000;
            width: 500px;
        }
        li span{ 
            padding-left: 10px;
            padding-right: 200px;
        }
        .checked{
            text-decoration: line-through;
            font-weight: bold;
            color: #ff0000;
        }
        li span2{
            position: relative;
            padding: 0 5px 0 5px;
            margin: 10px;
            font-size: 12px; 
            cursor: pointer;
            border: 1px solid #000000;
            background-color: #ffffff;
        }
        li span3{
            font-size: 12px;
            padding: 0 5px 0 5px;
            position: relative;
            cursor: pointer;
            border: 1px solid #000000;
            background-color: #ffffff;
        }
        }
    <body>
<h1> To Do List</h1>
<p>
    <input type="text" id="inItemText"> 
    <button id="btnAdd">Add</button>
</p>
<ul id="todoList"></ul>
<script src="todolist.js"></script>
    </body>